루프에서 포크가 발생하고 포크 위로 사용자의 입력을 요구합니다. 내 갈퀴 과정에는 인쇄도 있습니다. 프로세스가 실행될 순서에 대한 보장이 없으므로 사용자 프롬프트와 사용자가 정보를 입력 할 수있는 위치 사이에 하위 프로세스 인쇄 줄을 자주 (또는 항상) 얻을 수 있습니다.자식 프로세스의 일부가 완료 될 때까지 기다리시겠습니까?
즉, 나는 이런 식으로 뭔가를 얻을 :
Enter info: <OUTPUT FROM CHILD>
_
(여기서 _ 사용자가 입력을 자유롭게 체결 할 수 있음을 나타냅니다.)
I가 내 부모 프로세스를 허용하는 것을 시도하고 있기 때문에 동시에 실행되는 여러 어린이 프로세스 (각 사용자가 제공 한 정보를 기반으로 처리)를 포크로 실행하면 부모 프로세스를 계속 진행하기 전에 자식 프로세스가 종료 될 때까지 기다릴 수 없습니다. 부모가 계속 진행하기 전에 자녀의 일부가 완료되기를 기다릴 수있는 방법이 있습니까?
세마포어 사용을 고려해 보셨습니까? 그렇다면 왜 당신은 그 (것)들에 대하여 결정하고 당신은 그 외에 무엇을 시도 했습니까? – UnholySheep
@ UnholySheep 나는 실제로했다. 나는 깃발을 세우려고 시도하고 부모가 자식에 의해 1로 설정 될 때까지 기다렸다가 (플래그가 1이 아닌 경우 계속), 두 번째 반복에서는 프로그램이 응답을 멈춘다. 플래그를 인쇄하여 변경되지 않았 음을 확인했습니다 (인쇄 0 유지). 그래서 어떤 이유에서인지, 부모를 실행하려고 시도하고, 부모에게 돌아 가기 전에 내가 좋아할 자식의 2 줄을하지 않을 것입니다. –
그 코드가 아직 남아있는 경우 새로운 질문을 열어 볼 수 있습니다. 문제를 해결하는 데 도움이 될 것입니다. 나는 개인적으로 문제의 종류에 대한 세마포어를 사용하는 것이 더 좋은 선택이라고 생각할 수는 없지만, 아마도 다른 누군가가 당신을위한 해결책을 가지고있을 것입니다. – UnholySheep