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

一般想不到的地方也会出问题。。。
#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中了。