当前位置: 技术问答>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下却不行,何故?
……
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库文件
LZ应该去分linux系统中的系统调用和C库文件
|
类型不同,当然放不进去。
你可以用
open 打开文件 得到的句柄放到 fd_set 中去。
你可以用
open 打开文件 得到的句柄放到 fd_set 中去。
|
FD_SET 需要的是文件描述符,
如果非要用 FILE *,那么如果你的系统支持 fileno(),那么可以用它进行转换一下试试:
如果非要用 FILE *,那么如果你的系统支持 fileno(),那么可以用它进行转换一下试试:
FILE *fp;
int fd;
……
fd_set fs;
……
fd = fileno(fp);
FD_SET(fp,&fs);
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。