#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指令執行完畢就會卡死,后來我從網上搜索了一下,發現大家都是把兩個子行程都睡眠,在父行程中按順序喚醒,我試了一下,確實可以,但是,我這個代碼為什么不行呢,我是把第一個行程睡眠,第二個行程完成后喚醒第一個行程。為什么會失敗呢,是我方法用錯了還是對某些東西理解不深刻呢,希望大家能指出我的問題,謝謝大家了。
uj5u.com熱心網友回復:
3秒在什么地方?uj5u.com熱心網友回復:
linux?uj5u.com熱心網友回復:
沒加,我想單次都失敗
uj5u.com熱心網友回復:
這是單次的代碼
uj5u.com熱心網友回復:
Linux下寫的c++
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/50736.html
標籤:C++ 語言
上一篇:51單片機新手求教
