n 개의 하위 프로세스가있는 filesize 크기의 파일을 읽으려고합니다. 내 질문은 : filesize % subprocesses 경우 = 0, 파일의 전체가 읽을 수 있도록 filesize 어떻게 배포합니까? 내 생각은 하위 프로세스 중 하나를 다른 프로세스보다 약간 적게 읽는 것이었지만 어떻게해야하는지 잘 모르겠습니다. 다음은 내 코드입니다. 하위 프로세스는 내가 fork()하는 자식의 수입니다.C : 동일한 파일에서 여러 개의 하위 프로세스를 읽는 중
fstat(infile, &filestatus);
filesize = filestatus.st_size;
fs = (filesize + (subprocesses /2))/subprocesses;
이 유형의 반올림 문제는 하위 프로세스를 변경할 때 올바르게 infile을 읽지 않습니다. 어떤 도움이라도 대단히 감사합니다!
피터 저는 당신에게 빚이 있습니다! 그래, 이제 마지막 서브 프로세스가 마지막 서브 프로세스임을 어떻게 알 수 있을까? 나는 for 루프를 사용하여 n 개의 하위 프로세스를 포킹합니다. 어떻게 그렇게 할 수 있습니까? – ashadeka
'fork()'를 호출 할 때마다 반환 값을 확인해야합니다. fork 된 프로세스는 반환 값 0을 받고, 부모는 fork가 성공하면 양수 값을 받고, fork가 실패하면 음수 값을받습니다. 마지막 서브 프로세스는'fork()'가 루프의 마지막 반복에서 0을 리턴하는 것을 특징으로한다. – Peter
코드가 하위 프로세스 (모든 하위 프로세스가 하위 프로세스)를 실행하기 위해'exec *'를 호출하면 바이트 수 읽기 및 첫 번째 바이트로 읽는 오프셋이 두 매개 변수는 하위 프로세스로 전달됩니다. 두 번째 옵션으로 각 프로세스는 동일한 숫자 바이트를 읽으려고 시도합니다. 마지막 하위 프로세스는 EOF를 기록합니다.이 프로세스는 더 이상 바이트를 읽지 못하도록 코드 프로세스를 중지해야합니다. – user3629249