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

无控制终端、不是会话首进程,printf函数还是能输出。
实验了这样一个例子就是:
一个进程创建一个子进程,然后子进程创建一个新的会话,根据书上说的,新会话无控制终端,然后子进程在创建一个进程,该进程调用printf函数,但是在终端上还是看到了输出。
#include<sys/types.h> 
#include<stdio.h> 
#include<stdlib.h> 
#include<unistd.h> 
int main(void)

   pid_t pid=fork(); 
   if(p==0)
   {//child 
     setsid(); 
     p=fork(); 
     if(p==0)
     { 
       printf("session id=%d\n",s); 
     }else if(p>0)
     { 
       exit(0); 
     } 
   }else if(p>0)
   { 
     exit(0); 
   }else{}//error 
   return 0; 

  
运行结果是: 
> ./a.out 
session id=3074 
  

------解决方案--------------------
0, 1, 2 描述字还是打开的啊,而且是关联的终端,当然还有输出。