Linux 进程 fork、exec、wait练习
父进程 fork 3 个子进程,三个子进程一个调用 ps 命令,一个调用自定义程序 1(正常),一个调用自定义程序 2(会出段错误)。父进程使用 waitpid 对其子进程进行回收;
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char *argv[]){
pid_t pid;
int i = 0;
while(i < 3){
pid = fork();
if(pid == -1){
perror("fork");
exit(1);
}
if(!pid){
sleep(1);
if(i == 0){
execlp("ps", "ps", "-ajx", NULL);
perror("ps error");
exit(1);
}
if(i == 1){
execl("./print1", "./print1", "Hello", "world!", NULL);
perror("print1 error");
exit(1);
}
if(i == 2){
execl("./print2", "./print2", NULL);
perror("print2 error");
exit(1);
}
}
i++;
}
sleep(2);
for(int j = 0; j<3; j++){
printf("%d terminated.\n", waitpid(-1, NULL, 0));
}
return 0;
}
2020/07/25 17:16
@luxurylu