- 论坛徽章:
- 0
|
#include<stdio.h>
#include<unistd.h>
#include<errno.h>
#include<math.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<string.h>
#include<stdlib.h>
int main(){
pid_t child;
int status;
printf("This will demostrate how to get child status\n");
if((child=fork())==-1){
printf("Fork Error :%s\n",strerror(errno));
exit(1);
}
else if(child==0){ //不懂,我进行程序单步调试的时候,child总是不等于0的,可为什么这下面的语句能够输出。
int i;
printf("I am the child: %ld\n",getpid());
for(i=0;i<1000000;i++)
sin(i);
i=5;
printf("I exit with %d\n",i);
exit(i);
}
while(((child=wait(&status))==-1)&(errno==EINTR));
if(child==-1)
printf("Wait Error: %s\n",strerror(errno));
else if(!status)
printf("Child %ld terminated normally return status is zero\n",child);
else if(WIFEXITED(status))
printf("Child %ld terminated normally return status is %d\n",
child,WEXITSTATUS(status));
else if(WIFSIGNALED(status))
printf("Child %ld terminated due to signal %d znot caught\n",
child,WTERMSIG(status));
}
else if(child==0){ //不懂,我进行程序单步调试的时候,child总是不等于0的,可为什么这下面的语句能够输出。 |
|