fork函数使用
#include <unistd.h>
#include <stdio.h>
int main(void)
{
pid_t pid;
pid = fork();
if(pid==-1)
printf("fork error\n");
else if(pid==0)
{
printf("the returned value is %d\n", pid);
printf("in child process!!\n");
printf("My PID is %d\n",getpid());
}
else
{
printf("the returned value is %d\n", pid);
printf("in father process!!\n");
printf("My PID is %d\n",getpid());
}
return 0;
}
excel函数替代
#include <unistd.h>
#include <stdio.h>
int main(void)
{
printf("entering main process---\n");
if(fork()==0)
{
//
execl("/bin/ls","ls","-l",NULL);
printf("exiting main process ---\n");
return 0;
}
}
等待进程
#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(void)
{
pid_t pid_child, pid_return;
pid_child = fork();
if(pid_child < 0)
{
printf("Error occured on forking.\n");
}
else if(pid_child == 0)
{
sleep(10);
exit(0);
}
do
{
pid_return = waitpid(pid_child,NULL, WNOHANG);
if(pid_return == 0)
{
printf("No child exited\n");
sleep(1);
}
}
while(pid_return == 0);
if (pid_return == pid_child)
printf("successfullyget child %d\n", pid_return);
else
printf("some error occured\n");
return 0;
}