과제가 있는데 어떻게해야하는지 잘 모르겠습니다. 기본적으로 깨우침을 기다리는 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