私には割り当てがあり、どうやってそれをどうやって進めるのかはわかりません。基本的に私は、目覚めて待っている5つの作業プロセスを作成するコーディネータープロセスを作成する必要があります。コーディネーターは最初のプロセスにマーカ(整数)を渡し、マーカを1つインクリメントして次のプロセスに渡します。コーディネータープロセスは、同じことをする次のプロセスを起こします。いわゆるマーカーはすべてのプロセスを10回通過し、最終的にその値はコーディネーターによって印刷されるべきです。シグナルは、マーカーの共有メモリーと同様に使用する必要があります。プロセスプールの作成C Linux
私は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;
}
私は正直なところこれについてどうなるかわかりません。私は本当にアドバイスをいただければ幸いです。前もって感謝します!
各プロセスの10倍でなければなりません。共有メモリを使用しているので、マーカーのグローバル変数は必要ありませんか?これは私が思いついたものです: – spec