Linux学习之创建子进程

来源:互联网 发布:介绍人工智能方面的书 编辑:程序博客网 时间:2024/04/30 13:17
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <math.h>


/* 进程创建 */
void main(void)
{
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) // 子进程
{
int i;
printf("I am the child: %s\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)             // 子进程退出值为0
printf("Child %ld terminated normally return status is zero\n", child);
else if(WIFEXITED(status))   // 子进程退出值0
printf("Child %ld terminated normally return status is %d\n", child, WEXITSTATUS(status));
else if(WIFSIGNALED(status)) // 子进程未获信号而退出
printf("Chlid %ld terminated due to signal %d not caught\n", child, WTERMSIG(status));
}
3 0
原创粉丝点击