한 프로그램의 출력을 다른 프로그램의 표준 입력으로 파이프하는 방법은 무엇입니까?

한 프로그램의 출력을 다른 프로그램의 표준 입력으로 파이프하는 방법은 무엇입니까?

입력을 얻기 위해 scanf()를 사용하는 작은 C 프로그램이 있습니다.

int main(){
    char* buf[10];
    scanf("%s", buf);
    return 0;
}

echo aaa다른 프로그램의 출력(일부 Python에서 생성한 문자열 또는 원본 문자열) 을 scanf에 전달하려고 합니다 .

나는 다음과 같이 출력을 다른 터미널에서 stdin으로 직접 파이핑하는 것을 고려했습니다.

pidof a.out xxx echo aaa > /proc/xxx/fd/0

하지만 aaa내 C 프로그램의 터미널에만 인쇄되며 여전히 입력을 기다리고 있습니다.

미리 감사드립니다

답변1

당신은 할 수 있어야합니다

echo 'string' | ./a.out

쉘은 파이프가 올바르게 완료되는지 확인하고 프로그램은 표준 입력에서 간단히 읽습니다.


당신이 시도하는 것은 이식성이 매우 낮습니다.리디렉션, 파이프가 아닙니다.

또한 반환 코드를 확인 scanf()하고 입력 버퍼가 입력을 수용할 수 있을 만큼 충분히 큰지 확인하십시오. 이상적으로는 %9s예제에서와 같이 읽는 문자 수를 제한하는 형식 문자열을 사용하십시오 .

관련 정보