linux进程控制开发实例
fork.c
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
pid_t result;
result = fork();
if (result == -1)
{
printf("Fork Error!\n");
}
else
{
if (result == 0)
{
printf("The returned value is %d\nThe child process!!\nMy PID is %d\n", result, getpid());
}
else
{
printf("The returned value is %d\nThe father process!!\nMy PID is %d\n", result, getpid());
}
}
return 0;
}
exec.c
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
pid_t result;
result = fork();
if (result == 0)
{
if (execlp("ps", "ps", "-ef", NULL) < 0)
{
printf("Execlp error\n");
}
}
return 0;
}
waitpid.c
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
pid_t pc, pr;
pc = fork();
if (pc < 0)
{
printf("Error fork\n");
}
else if (pc == 0)
{
sleep(5);
exit(0);
}
else
{
do
{
pr = waitpid(pc, NULL, WNOHANG);
if(pr == 0)
{
printf("The child process has not exited!\n");
sleep(1);
}
}while (pr == 0);
if (pr == pc)
{
printf("Get child exit code: %d\n", pr);
}
else
{
printf("Some error occured.\n");
}
}
return 0;
}

浙公网安备 33010602011771号