Messages in this thread | | | Date | Mon, 21 Jan 2008 17:54:39 -0600 | From | Robert Hancock <> | Subject | Re: [HELP]Problem with exit(0) and _exit(0) on RHEL x86 |
| |
Li Xiaodong wrote: > I thought the effects of exit(0) and _exit(0) should be different. > > ---- > int main(void) > { > int var = 0; > pid_t pid; > > printf("before vfork\n"); > if ( (pid = vfork()) < 0 ) > printf("error\n"); > else if ( pid == 0 ) > { > var++; > exit(0); /* Clear parent's IO */ > } > > printf("%d\n",var); > return 0; > } > > ---- > > int main(void) > { > int var = 0; > pid_t pid; > > printf("before vfork\n"); > if ( (pid = vfork()) < 0 ) > printf("error\n"); > else if ( pid == 0 ) > { > var++; > _exit(0); /* Do not clear parent's IO */ > } > > printf("%d\n",var); > return 0; > } > > ---- > > But the actual results on RHEL5 x86 were beyond my ken. The outputs of the > above two are the same. > > $./a.out > before vfork > 1 > > Could anyone help me with this? Thanks.
Why do you expect a different result? Also, calling exit from a vforked child is explicitly not allowed. The only things you can do are execve or _exit.
-- Robert Hancock Saskatoon, SK, Canada To email, remove "nospam" from hancockr@nospamshaw.ca Home Page: http://www.roberthancock.com/
| |