0
C, Linux에서 세마포어와 공유 메모리로 문제가되는 두 개의 생성자와 하나의 문서를 해결해야합니다. 세 가지 프로세스가 있습니다. 첫 번째 프로세스는 프로듀서이고 두 번째 프로세스는 프로듀서이며 세 번째 프로세스는 consument입니다.두 프로세스가 공유 메모리에 쓰기
제작자가 자신의 파일을 읽고 하나의 버퍼에 씁니다. consument는 버퍼에서 읽고 stdout에 써야합니다.
제 문제는 두 번째 제작자가 적절한 위치에 버퍼링하는 방법입니까? 어쩌면 몇 가지 코드를 보여 첫 프로듀서 :
while(fgets(line, sizeof(line),fp)){
wait(semid,0);
for(i=0;i<1000 && line[i]!='\0';i++){
buf[i]=line[i];
}
signal(semid,1);
}
fclose (fp); // close file
signal(semid,1);
두 번째 프로듀서 (세마포어 제외)이 동일합니다 ... 어떻게 (첫 생산 후) 적절한 위치에 버퍼에 작성하는 방법을 ...
소비자 :
while(1){
wait(semid,2);
printf("\n Proces K: ");
for (i=0; i<1000 && buf[i]!='\n'; i++){
printf("%c", buf[i]);
}
signal(semid,0);
세마포어로 균등하게 보호 된 다음 주소를 버퍼 내부에 저장하십시오. –
무엇을 의미합니까? 이 솔루션을 이해할 수 없습니다. – xorgx3
[i]도 공유해야합니다. 단지 buf가 아닙니다. – user3344003