能不能帮忙解释一下这段代码中的一部分
#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<errno.h>
#include<math.h>
#include<unistd.h>
int main(int argc,char **argv)
{
pid_t child;
int status;
printf("This will demostrate how to get the child status\n");
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child==0)
{
int i=0;
printf("I am the child:%d\n",getpid());
for(i=0;i<1000000;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",strerror(errno));
}
else if(!status)
{
printf("Child %d terminated normally return status is zero\n",child);
}
else if(WIFEXITED(status))
{
printf("Child %d terminated normally return status is %d\n",child,WEXITSTATUS(status));
}
else if(WIFSIGNALED(status))
{
printf("Child %d terminated due to signal %d znot caught\n",child,WTERMSIG(status));
}
return 0;
}
1、fork 是用来创建子进程的, 而不是线程( 线程创建需要用到 pthread_create )。
需要根据 fork() 的返回值来判断下面的代码是在父进程(返回pid>0)中还是子进程(返回0)中. 像上面的代码中 if 中的代码被在子进程中执行, else 中的代码在父进程中执行。
2、例程:
#include <stdio.h>