读书人

当王子遇上公主那是童话的开始当d

发布时间: 2012-04-09 13:41:25 作者: rapoo

当王子遇上公主,那是童话的开始,当daemon程序遇上printf呢?
好像是BUG的开始。。。


#include <sys/types.h>
#include <unistd.h>
#include <signal.h>

#include <stdio.h>
#include <stdlib.h>

void daemon_init(void)
{
int i;
pid_t pid;
if((pid = fork()) > 0) {
exit(0);
}

sleep(1);
setsid();
signal(SIGHUP,SIG_IGN);

if( (pid = fork()) > 0) {
exit(0);
}

sleep(1);

for(i = 0; i < 3; i++){
close(i);
}
}

int main(void)
{
daemon_init();
FILE *fp1 = fopen( "a ", "w ");
FILE *fp2 = fopen( "b ", "w ");

printf( "%s ", "hello world\n ");

exit(0);
return 0;

}


[解决办法]
bug。。
jf
[解决办法]
fork返回值是两个,一个返回给父进程(子进程的ID)一个返回给子进程(0)
[解决办法]
嗯,确实是这样,fd总是从可用的最小值开始的,但是为什么偶之前测试的时候没有问题呢……

读书人网 >C++

热点推荐