- 論壇徽章:
- 0
|
#include "def.h"
int glob = 10;
void test_vfork(void);
int
main(void)
{
char* buf = malloc(sizeof(char)*16);
sprintf(buf,"in main glob = %d\n",glob);
write(STDOUT_FILENO,buf,strlen(buf));
test_vfork();
sprintf(buf,"in main glob = %d\n",glob);
write(STDOUT_FILENO,buf,strlen(buf));
exit(0);
}
void
test_vfork(void)
{
pid_t pid;
if((pid = vfork()) < 0)
errmsg("vfork error\n");
else if( pid == 0 )
{
glob++;
printf("in vfork glob = %d\n",glob);
// _exit(0);
}
if(waitpid(pid,NULL,0) != pid)
errmsg("waitpid error\n");
}
程序的運(yùn)行流程是怎樣的?
在我機(jī)器上如果有_exit(0),我預(yù)料一樣,沒有_exit結(jié)果如下:
in main glob = 10
in vfork glob = 11
waitpid error
error number is :No child processes
in main glob = 11
in vfork glob = 12
waitpid error
error number is :No child processes
Killed
是什么原因呢?
謝謝指點(diǎn)! |
|