繁体   English   中英

如何在C中的文件描述符中打印信息

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM