저는 C 언어를 처음 사용하고 있습니다. 한 프로그램의 출력을 처리하기 위해 다른 프로그램으로 보내는 방법을 알아 내려고하고 있습니다. ... 또는 PIPE.C - printf와 scanf를 사용하는 파이프. 일시 중지
예 : ./foo | ./boo
foo - 외부 소스에서 100ms마다 데이터를 읽고 stdout에 씁니다.
야유는 -, 표준 입력에서 데이터를 읽고 몇 가지 간단한 계산을 수행하고 표준 출력에 기록,
(나는 foo에 대한 액세스 권한이없는,하지만 float 값 새 행에 100ms마다 기록합니다.) 나는 그것이 그러나 백 개 항목의 각 한 쌍 후에 작업이는 ...이 이초 일시 중지 ...
가 그래서 약 200 라인, 이초 일시 정지, 200 선 2 초 간격을 뱉어. 등등.내가 알고 있어야하는 버퍼가 있습니까?
다음은 부 코드입니다.
#include <stdio.h>
float input;
float value;
while (1)
{
input = scanf("%f", &value);
{do stuff here}
printf("result %f \n ", input);
fflush(stdout);
}
return 0;
}
편집 나는 foo는이 100ms의 지연에 대한 루프를 가지고, 문제를 발견했다. 부두에 이것을 배관 할 때 그것은 어떻게 든 그룹화하게되었다. 이 루프를 제거하면 문제가 해결되었습니다
'printf'에 개행 문자가 없습니다. 이 경우'printf' 다음에'fflush (stdout)'을 호출해야합니다. –
David 님, 개행 문자 & fflush로 코드를 업데이트했으며 여전히 동일한 결과를 얻고 있습니다. – Mwilliams03
'\ n'을 인쇄하면 stdout을 플러시하지 않아도됩니다. –