【发布时间】:2017-10-12 14:47:18
【问题描述】:
我有一个任务,但我不太确定如何去做。基本上我必须创建一个协调进程来创建 5 个等待被唤醒的工作进程。协调器将标记(整数)传递给第一个进程,然后该进程将标记递增 1 并将其传递给下一个进程。协调进程唤醒下一个执行相同操作的进程,依此类推。所谓的标记应该经过所有过程 10 次,最后它的值应该由协调器打印出来。应使用信号以及标记的共享内存。
所以我创建了 5 个进程,并且我认为在每次迭代中都应该有一个信号,并且应该传递一个处理程序,它基本上可以使用标记完成所有工作。 这是我第一次使用流程。这是我目前所拥有的:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/shm.h>
#include <signal.h>
#define numOfProcesses 5
pid_t procIDs[5];
void handler(int signum){
//marker and all work here
}
void createProcesses(){
int i;
for(i = 0; i < numOfProcesses; i++){
procIDs[i] = fork();
if(procIDs[i] < 0 ){
perror("Fork error!");
}else if(procIDs == 0){
pause();
}
}
}
int main(){
createProcesses();
int i;
for(i = 0; i < numOfProcesses; i++){
pkill(SIGUSR1, handler);
}
return 0;
}
老实说,我不知道该怎么做。我真的很感激你的建议。提前致谢!
【问题讨论】:
标签: c process signals shared-memory