|
代码:
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int glob = 6;
int main()
{
int var;
pid_t pid;
var = 88;
printf("before vfork\n");
if((pid = vfork()) < 0){
printf("vfork error\n"0;
}else if(pid == 0){
glob++;
var++;
_exit(0); //问题?? 换成exit(0),输出??
}
printf("pid = %d, glob = %d, var = %d\n, getpid(), glob, var);
exit(EXIT_SUCCESS);
}
就是unix环境编程的问题,书上说如果把_exit(0), 换作exit(0),将会只输出:
before vfork
原因是子进程调用了exit,它刷新关闭了所有的标准I/0流,所以父进程调用printf时,输出流已关闭,于是printf返回-1
可我运行不是,printf照样输出,返回值是32,请问各位是什么原因呢?? |
|