wait.c
#include <unistd.h>
#include <sys/types.h>#include <sys/wait.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
pid_t pc,pr;
pc = fork();
if(pc<0)
{
perror("fork====");
exit(1);
}
else if(pc == 0)/*子進程*/
{
printf("In child process %d\n", getpid());
sleep(5);
exit(0);
}
else
{
do
{
pr = waitpid(pc,NULL,WNOHANG);
if(pr == 0)
{
printf("The child process hasnot exited\n");
sleep(1);
}
}while(pr==0);
if(pr == pc)
{
printf("Get child %d\n",pr);
}
else
{
printf("Some error occured\n");
}
}
exit(0);
}
Makefile
obj=wait.o
wait:$(obj)
gcc $(obj) -o wait
wait.o:wait.c
gcc -c wait.c
clean:
rm $(obj) wait