glibc中的printf如何输出到串口
时间:11-22
来源:互联网
点击:
r_的FD = 2。FILEBUF_LITERAL用于初始化_IO_FILE,定义如下(glibc-2.3.6/libio/libioP.h):
[plain]view plaincopyprint?
- #defineFILEBUF_LITERAL(CHAIN,FLAGS,FD,WDP)\
- {_IO_MAGIC+_IO_LINKED+_IO_IS_FILEBUF+FLAGS,\
- 0,0,0,0,0,0,0,0,0,0,0,0,(_IO_FILE*)CHAIN,FD,\
- 0,_IO_pos_BAD,0,0,{0},0,_IO_pos_BAD,\
- 0}
[plain]view plaincopyprint?
- conststruct_IO_jump_t_IO_file_jumps=
- {
- JUMP_INIT_DUMMY,
- JUMP_INIT(finish,INTUSE(_IO_file_finish)),
- JUMP_INIT(overflow,INTUSE(_IO_file_overflow)),
- JUMP_INIT(underflow,INTUSE(_IO_file_underflow)),
- JUMP_INIT(uflow,INTUSE(_IO_default_uflow)),
- JUMP_INIT(pbackfail,INTUSE(_IO_default_pbackfail)),
- JUMP_INIT(xsputn,INTUSE(_IO_file_xsputn)),
- JUMP_INIT(xsgetn,INTUSE(_IO_file_xsgetn)),
- JUMP_INIT(seekoff,_IO_new_file_seekoff),
- JUMP_INIT(seekpos,_IO_default_seekpos),
- JUMP_INIT(setbuf,_IO_new_file_setbuf),
- JUMP_INIT(sync,_IO_new_file_sync),
- JUMP_INIT(doallocate,INTUSE(_IO_file_doallocate)),
- JUMP_INIT(read,INTUSE(_IO_file_read)),
- JUMP_INIT(write,_IO_new_file_write),
- JUMP_INIT(seek,INTUSE(_IO_file_seek)),
- JUMP_INIT(close,INTUSE(_IO_file_close)),
- JUMP_INIT(stat,INTUSE(_IO_file_stat)),
- JUMP_INIT(showmanyc,_IO_default_showmanyc),
- JUMP_INIT(imbue,_IO_default_imbue)
- };
通过本文可以理解:文件描述符0、1和2和stdout、stdin和stderr对应,如果要修改linux内核中文件描述符相关代码,一定要注意文件描述符0、1和2的分配和回收,否则会导致终端没有输出信息,也无法和内核输入信息。
glibcprintf输出串 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
