多进程并发的程序出错,来问问大神们我错在什么地方

FNC Reckless 2020-05-31 08:26:52
#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指令执行完毕就会卡死,后来我从网上搜索了一下,发现大家都是把两个子进程都睡眠,在父进程中按顺序唤醒,我试了一下,确实可以,但是,我这个代码为什么不行呢,我是把第一个进程睡眠,第二个进程完成后唤醒第一个进程。为什么会失败呢,是我方法用错了还是对某些东西理解不深刻呢,希望大家能指出我的问题,谢谢大家了。
...全文
241 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
FNC Reckless 2020-06-07
  • 打赏
  • 举报
回复
引用 2 楼 棉猴的回复:
linux?
Linux下写的c++
FNC Reckless 2020-06-07
  • 打赏
  • 举报
回复
引用 1 楼 双杯献酒的回复:
3秒在什么地方?
这是单次的代码
FNC Reckless 2020-06-07
  • 打赏
  • 举报
回复
引用 1 楼 双杯献酒的回复:
3秒在什么地方?
没加,我想单次都失败
棉猴 2020-06-02
  • 打赏
  • 举报
回复
linux?
双杯献酒 2020-06-02
  • 打赏
  • 举报
回复
3秒在什么地方?

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧