최근 우리 그룹이 자주 사용하는 응용 프로그램 중 하나를 사용자 지정하는 작업을했습니다. 이 응용 프로그램은 C로 작성된 것으로, 많은 경험이 없지만 기능적인 예를 발견했습니다. 그러나 아직 테스트 베드에 완전히 통합 할 수 없었습니다.C의 FIFO (named pipe)
요구 사항은 매우 간단합니다. 명명 된 파이프를 열고 일부 데이터를 밀어서 다른 그룹이 파이프를 읽고 무엇인가 할 수 있도록합니다. 이것은 서버가 그 일을하는 것을 방해하지 않도록 이루어져야합니다.
내 응용 프로그램에는 history라는 배열이 있으며 여기에는 필요한 모든 값이 들어 있습니다. 나는 지금까지 이것을 달성하기위한 나의 시도와 결과가 엇갈 렸습니다. 대신 fprintf
의 write
을 사용할 때 이전에 일부 성공을 거두었
DCmass_add_history(history, history_num);
int fd;
char * myfifo = "/tmp/fooPipe";
/* create the FIFO (named pipe) */
mkfifo(myfifo, 0666);
/* open FIFO (named pipe) */
fd = open(myfifo, O_WRONLY);
for (i = 0; i < history_num; i++) {
/* Write our data to our FIFO (named pipe) */
fprintf(fd, "%d %d %f %f", history[i].id, history[i].clock, history[i].value, history[i].ns);
}
close(fd);
하지만 내 파이프에 어떤 변수를 가져올 수 없습니다 : 코드 조각 아래를 참조하시기 바랍니다.
이전 스택 오버플로 예제에서 Stack Overflow example 나는 내 파이프를 테스트하기 위해 기본 판독기를 얻을 수 있었고 위의 기본 코드는 내 파이프를 열 수있었습니다.
'는 fprintf를 w'소요 'FILE *'; 'int' 서술자가 아닙니다. – WhozCraig