lewy7 发表于 2016-09-18 14:52

open返回0


有个函数中用了open。
第一次调用函数open返回0,
第二次调用函数后 open可以正常返回文件描述符,这个有什么门道吗?


strace跟踪

//第一次调用函数,open后抓了error no : Resource temporarily unavailable
open("/home/log/user.log", O_WRONLY|O_CREAT|O_APPEND, 0644) = 0
...
//第二次调用函数
open("/home/log/user.log", O_WRONLY|O_CREAT|O_APPEND, 0644) = 11


MMMIX 发表于 2016-09-18 21:45

回复 1# lewy7

open 返回 0 说明成功了呀,0 也是个有效的文件描述符。

w_anthony 发表于 2016-09-19 16:16

open失败是返回-1
open() and creat() return the new file descriptor, or -1 if an error occurred (inwhichcase,errnoisset
       appropriately).

windoze 发表于 2016-09-20 01:41

谁让你把stdin关了,肯定是在搞daemon对不?

hanxin83 发表于 2016-09-20 10:52

顶猫大, 自己调daemon吧. 不要自己去close 0, 1, 2等等...
页: [1]
查看完整版本: open返回0