多进程并发的程序出错,来问问大神们我错在什么地方
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <signal.h>
typedef void (*signal_handler)(int);
void signal_handler_fun(int signum){}
int main(){
signal(SIGUSR1,signal_handler_fun);
pid_t pid;
pid_t pid1;
pid = fork();
if(pid<0)
{exit(-1);}
else if(pid==0){
printf("child 1 create!\n");
pause();
execlp("/bin/ls","ls",NULL);
printf("child 1 is OK!\n");
}
else{
pid1 = fork();
if(pid1<0)
{exit(-1);}
else if(pid1==0){
printf("child 2 create!\n");
execlp("/bin/ps","ps",NULL);
printf("child 2 is OK!\n");
kill(pid,SIGUSR1);
}
else{
while(wait(NULL)!=-1){}
exit(0);
}
}
}
今天在做操作系统的实验时,碰到了问题(第一次接触这些东西,跌跌撞撞),怎么也解决不了,题目如下:编写一个多进程并发执行程序。父进 程每隔 3 秒重复建立两个子进程,首先创建的让其执行 ls 命令,之后创建执行让其 执行 ps 命令,并控制 ps 命令总在 ls 命令之前执行。我这个代码是错的,PS指令执行完毕就会卡死,后来我从网上搜索了一下,发现大家都是把两个子进程都睡眠,在父进程中按顺序唤醒,我试了一下,确实可以,但是,我这个代码为什么不行呢,我是把第一个进程睡眠,第二个进程完成后唤醒第一个进程。为什么会失败呢,是我方法用错了还是对某些东西理解不深刻呢,希望大家能指出我的问题,谢谢大家了。