|
|
fork()后 产生子进程。
我杀掉父进程后,父进程会关闭哪些资源,书上说是标准I/O流等,但是我是定向到文件的,然后我在文件中发现,父被杀后,不能输出子进程的输出结果,是否证明父进程被杀,会关闭子所有的I/O流。
但是为了实现守护进程,我用一个for,循环对标准输出打印一句话,却能打印,又证明父没有关掉标准输出?
怎么回事呢?希望能指点一下。
- int main(int argc,char **argv)
- {
- FILE *fp;
- pid_t pid;
- if((fp=fopen("pid.txt","w"))==NULL)
- {
- fprintf(stderr,"%s","open error");
- exit(1);
- }
- if((pid=fork())==-1)
- {
- fprintf(stderr,"%s","fork error");
- exit(1);
- }
- if(pid==0)
- {
- fprintf(fp,"child:my id is:%d,my father's id is:%d\n",getpid(),getppid());
- }
- else
- {
- sleep(5);
- fprintf(fp,"father:my child id is:%d,my id is:%d,my father's id is:%d\n",pid,getpid(),getppid());
- exit(0);
- }
- for(;;)
- {
- sleep(2);
- printf("child is here\n");
- }
- }
复制代码 |
|