- 论坛徽章:
- 0
|
关于exit()和_exit()的问题
- #include <sys/types.h>
- #include "ourhdr.h"
- int glob = 6; /* external variable in initialized data */
- int
- main(void)
- {
- int var; /* automatic variable on the stack */
- pid_t pid;
- var = 88;
- printf("before vfork\n"); /* we don't flush stdio */
- if ( (pid = vfork()) < 0)
- err_sys("vfork error");
- else if (pid == 0) { /* child */
- glob++; /* modify parent's variables */
- var++;
- _exit(0); /* child terminates */
- //exit(0); 修给这里没有变化!!!
- }
- /* parent */
- printf("pid = %d, glob = %d, var = %d\n", getpid(), glob, var);
- exit(0);
- }
复制代码
调用_exit()的时候结果是:
before vfork
pid = 9343, glob = 7, var = 89
调用exit()的时候结果是:
before vfork
pid = 9352, glob = 7, var = 89
这是怎么回事呢?? |
|