当前位置:  技术问答>linux和unix

添加FILE指针到fd_set的问题

    来源: 互联网  发布时间:2016-06-09

    本文导语:  FILE *fp; …… fd_set fs; …… FD_SET(fp,&fs); // Segmentation fault 这段代码在window下可以正常运行,在linux和freebsd下却不行,何故? | linux 下,文件描述符(File Descriptor)和流(FILE)是不同的,前者属...

FILE *fp;
……
fd_set fs;
……
FD_SET(fp,&fs); // Segmentation fault

这段代码在window下可以正常运行,在linux和freebsd下却不行,何故?

|
linux 下,文件描述符(File Descriptor)和流(FILE)是不同的,前者属于系统调用范畴,每个进程从0开始(0、1、2分别为标准输入、标准输出、标准错误); 后者为C库对文件操作的封装(FILE为一个 struct 的typedef)。

|

LZ应该去分linux系统中的系统调用和C库文件

|
类型不同,当然放不进去。
你可以用 
open 打开文件 得到的句柄放到  fd_set 中去。

|
FD_SET 需要的是文件描述符,
如果非要用 FILE *,那么如果你的系统支持 fileno(),那么可以用它进行转换一下试试:

FILE *fp;
int fd; 
…… 
fd_set fs; 
…… 
fd = fileno(fp);
FD_SET(fp,&fs);

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Vectors 成员 push_back():在Vector最后添加一个元素
  • fedora core2下,我删除了网卡设备,然后重新添加,为什么一添加就死机啊?在命令行模式下如何用命令添加网络设备啊?
  • C++ Lists(链表) 成员 push_front():在list的头部添加一个元素
  • /etc/hosts中添加的域名信息,用哪个命令可以测试添加的内容是否正确?
  • C++ Lists(链表) 成员 push_back():在list的末尾添加一个元素
  • android中如果为listview的item添加listener,也能为item中的button添加listener
  • javascript 添加到收藏夹和书签代码示例
  • linux向压缩包中添加文件,怎么添加不进去?
  • C++ Strings(字符串) 成员 append():在字符串的末尾添加文本
  • 局域网共享上网,使用nat时在postrouting中添加masquerade规则允许往外发送,prerouting是不是也要添加规则。
  • php安装完成后如何添加mysql扩展
  • 为mysql数据库添加添加事务处理的方法
  • extjs介绍及在myeclipse中添加extjs步骤
  • linux系统下怎么添加在windows底下的盘
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • mysql 添加索引 mysql 如何创建索引
  • 怎样添加内核启动参数???
  • linux~shell~如何取变量的值并在后面添加字符?
  • /etc/hosts中添加的域名信息,用哪个命令可以测试添加的内容是否正确? iis7站长之家
  • C# SkinEngine控件 给窗体添加皮肤的方法
  • ASP.NET 页面中加添加用户控件的写法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3