O_RDWR 모드에서 open()을 사용하여 양쪽에서 열린 FIFO 파이프가 있습니다. 읽기 끝에는 read()가 모든 문자를 읽지는 않지만 호출에 지정된 문자보다 작습니다. open()을 사용하여 모든 문자를 읽도록하는 방법이 있습니까? 사전에open() 시스템 콜을 사용하여 FIFO로 작성된 모든 문자 읽기
감사
if (p != NULL){
printf("Inside p not null!\n");
if((fd = open(p, O_RDWR)) < 0){
perror("File could not be opened!");
exit(EXIT_FAILURE);
}
//FILE *rdptr = fopen(p,"r");
memset(buf,0,file_len);
rc = read(fd, buf, file_len);
printf("Number of bytes read: %d\n", rc);
printf("Data detected on FIFO\n");
buf[rc] = '\0';
char base[20] = "output.txt";
char name[20];
sprintf(name, "%d%s", suffix, base);
FILE *fptr = fopen(name,"ab+");
fd_wr = open(name,O_WRONLY);
charnum = write(fd_wr,buf,rc);
kill(id_A, SIGKILL);
//printf("No. of characters written: %d\n",charnum);
//FD_CLR(fd, &rdfs);
}
나머지 문자를 읽으려면'read()'를 다시 호출 해 보았습니까? – saeedn
아니요, 한 번 읽는 중입니다. 코드가 편집 된 게시물에 추가됩니다. 어떻게해야할지 모르겠다. – user3033194
고정 된 양의 데이터를 작성한 다음 작성자를 죽이는 경우 대신 파일을 사용하십시오. 여기에 FIFO가 필요없는 것 같습니다. – nneonneo