的代码是这样的:Linux开放源返回0
int fd = open(filename, O_RDONLY);
“最大打开的文件”是1024的过程可以打开几百个文件。 一开始,它的效果很好。一段时间后,打开返回0.我不知道为什么。帮帮我!!!感谢提前!
PS:这不是int fd = open(filename, O_RDONLY) == -1;
的代码是这样的:Linux开放源返回0
int fd = open(filename, O_RDONLY);
“最大打开的文件”是1024的过程可以打开几百个文件。 一开始,它的效果很好。一段时间后,打开返回0.我不知道为什么。帮帮我!!!感谢提前!
PS:这不是int fd = open(filename, O_RDONLY) == -1;
当open
返回0,它告诉你,如果你想用你刚刚打开的文件,你应该使用FD 0。
您是否收到关闭标准输入?
0表示stdin,但它应该返回一个大于3的数字?不是吗? – user2253605 2013-04-07 03:19:42
@ user2253605:它会返回它分配的任何fd。如果你关闭了stdin,0是完全公平的游戏。 – tmyklebu 2013-04-07 03:53:49
管理员可以改变的ulimit的一些参数 管理员可以设置“的ulimit -n 2000”和每个进程打开的文件数可以是2000
如果打开的文件太多,它应该返回-1,并将errno设置为EMFILE。但是它返回0.为什么? – user2253605 2013-04-07 03:23:25
如果试图通过改变你的代码限制的打开文件的数量,行为变化?我的意思是,确保你在任何时候没有超过1024个打开的文件。 – 2013-04-07 02:49:34
但是,如果打开的文件太多,它应该返回-1,并将errno设置为EMFILE。 – user2253605 2013-04-07 03:22:20
是的,我的意思是别的..啊,这里差不多早上6点..睡觉的时间:D看看这里(并接受在这个问题的答案),这个问题是非常相似的:http://stackoverflow.com/ question/2135159/socket-returns-0-c-client-server-app – 2013-04-07 03:38:32