日期:2014-05-16  浏览次数:20758 次

网络daemon程序的问题
fork...
setsid...
fork...
chdir...
umask...
daemon基本成形,问题在接下来这步:
for   (int   i   =   0;   i   <   3;   i++)
        close(i);
int   sock   =   socket(...);     //   失败,errno为9,   EBADF,   无效文件描述符

经测试,失败可能是由于关闭了0,1,2引起的,暂时修改如下:
for   (int   i   =   0;   i   <   3;   i++)
        close(i);
int   file   =   open(...);     //     file值是1
int   sock   =   socket(...);     //     成功了

这样虽然能暂时解决问题,但让人很不爽,万一没有需要打开的文件呢?
大家有没有遇到这样的问题,你们是怎么解决的?

------解决方案--------------------
我的0,1,2关闭了都没有问题.