一般想不到的地方也会出问题。。。
#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;
}
------解决方案--------------------楼主想说什么?
是变量没初始化吗?
------解决方案--------------------没有什么,这只不过是输出重定向的一个实例而已。进程关闭了0(输入)、1(输出)、2(错误输出)三个文件,然后有打开了fp1,fp2,此时fp1就是0,fp2就是1,即文件fp2就是标准输出,所有printf函数的输出结果就到两位文件b中了。