exit并未关闭标准I/O流

1453阅读 0评论2012-01-18 jinxinxin163
分类:LINUX

对于vfork,在子进程调用exec或exit之前,它在父进程空间中执行!

  1. #include <stdio.h>
  2. #include <sys/types.h>
  3. #include <unistd.h>
  4. int glob = 6;
  5. int main()
  6. {
  7.     int var;
  8.     pid_t pid;
  9.     var == 88;
  10.     printf("before vfork\n");
  11.     if((pid = vfork()) < 0){
  12.         perror("vfork error\n");
  13.     }else if (pid == 0){
  14.         glob++;
  15.         var++;
  16.         exit(0);
  17.     }
  18.     sleep(1);
  19.     printf("pid=%d, glob=%d, var=%d\n", getpid(), glob, var);
  20.     exit(0);
  21. }
此处,由于子进程在父进程空间中运行且先于父进程运行,如果exit会关闭标准I/O流,那么在父进程中,"pid="这样的字眼不会输出,但是,实际的输出却是:
[root@localhost tast]# ./4test
before vfork
pid=29821, glob=7, var=3722433

看起来exit没有关闭标准I/O流!!!

上一篇:setuid/seteuid/setreuid函数
下一篇:linux下/dev/tty, /dev/tty0, /dev/console区别