[英]how to print the information in file descriptor in C.
(gdb) print* data_out_file[0]
$1 = {_flags = -1, _IO_read_ptr = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_read_end = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_read_base = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_write_base = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_write_ptr = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_write_end = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_buf_base = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_buf_end = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_save_base = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_backup_base = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
_IO_save_end = 0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>, _markers = 0xffffffffffffffff, _chain = 0x11004147ffffffff,
_fileno = 498074112, _flags2 = 12648704, _old_offset = 135392766359363840, _cur_column = 240, _vtable_offset = 66 'B', _shortbuf = "á",
_lock = 0xecfc392019202004, _offset = -35, __pad1 = 0xffffffffffffffff, __pad2 = 0xffffffffffffffff, __pad3 = 0xffffffffffffffff,
__pad4 = 0xffffffffffffffff, __pad5 = 18446744073709551615, _mode = -1, _unused2 = 'ÿ' <repeats 20 times>}
在GDB中,如果我们打印文件指针,我们将获得描述符。 只是想知道我们如何在像printf这样的C代码中做到这一点?
假设您想要与有效的FILE *
流对象相关联的int
文件描述符值,请使用fileno()
函数 :
名称
fileno-将流指针映射到文件描述符
概要
#include <stdio.h> int fileno(FILE *stream);
描述
该
fileno()
函数将返回与关联的整文件描述符stream
通过指向stream
。返回值
成功完成后,
fileno()
将返回与stream
关联的文件描述符的整数值。 否则,应返回值-1并errno
以指示错误。
您不取消引用FILE *
流对象本身。 这样做会导致易碎,不可移植的代码容易损坏。 在某些实现中,根本无法取消引用FILE *
结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.