세마포 및 공유 메모리를 사용하여 C에서 생산자 - 소비자 문제를 생성하려고합니다. 세마포 및 공유 메모리가 작동하지만 개별 소비자와 생산자를 실행하는 방법을 결정하는 데 문제가 있습니다.C에서 fork를 사용하여 백그라운드 프로세스 생성 n
이것은 숙제이며 요구 사항에는 생산자와 소비자가 단일 스레드 프로세스 여야한다고 명시되어 있습니다. 저는 교수님에게 연락을했고 그는 fork()를 사용하도록 권유했습니다. 나는 이것이 pthread()를 사용할 수 없다는 것을 의미한다고 가정한다.
현재 저는 프로듀서와 소비자를위한 별도의 응용 프로그램이 있습니다 (즉, 각각 고유 한 main()가 있습니다). 사용자가 지정한대로 많은 수의 프로듀서 및 소비자 집합을 실행할 수 있어야하고 설정된 시간이 지난 후에 응용 프로그램을 종료 할 수 있어야합니다.
원래 나는 이것이 갈래의 프로세스를 실행하기 전에 세마포어를 닫습니다 응용 프로그램과 같은 문제에 이르게 물론이int Ppid = fork();
if(Ppid == 0){
execv("pathtoproducer", NULL);
}
int Cpid = fork();
if(Cpid == 0){
execv("pathtoconsumer", NULL);
}
//close semaphores and detach shared memory
을 시도했다.
그래서 나는이 같은 일을 생각 해요 :
int pid = fork();
if(pid == 0){
execv("pathtoproducer", NULL);
execv("pathtoconsumer", NULL);
}
else{
//wait for timer to run out
}
//detach shared memory and close semaphore
그러나 물론 나는 실행되지 않습니다 소비자 execv와 사용하고 있기 때문이다. 생산자와 소비자 모두를 끌어 들이기 위해 사용할 수있는 무언가가 있습니까 (이 예제에서 n 개의 값을 가져야 함을 명심하십시오,이 예제에서는 하나의 세트로 시도하고 있습니다).
감사합니다.
테스트를 위해 제작자와 소비자가 공유 메모리 및 세마포를 편집하는 대신 실제 사실대로 처리해야합니다. 나는이 코드를 작동시킬 수 없다. 생성자를 만든 다음 나머지 부모를 실행 한 다음 내 콘솔 행 (user @ user-whatever)을 다시 인쇄 한 다음 제작자를 실행합니다. 난 그냥 소비자와 생산자의 쌍을 만들고 할당 된 시간 후에 끝내고 다음 부모의 나머지 코드를 실행하고 싶습니다. – user1287523