[완료] stdin redirection 문제
글쓴이: whxoans / 작성시간: 수, 2008/12/10 - 12:41오후
shell script에서 echo를 stdin으로 재지향해서
이를 C언어로 짜여진 프로그램에서 stdin을 읽어들여 출력결과를 받으려고 하는데
생각처럼 되질 않네요.
쉘 스크립트는 echo로 출력을 stdin으로 재지향하게 해 놨습니다.
#!/bin/sh # test.sh echo -e "test\n" 1>&0
프로그램에서는 이를 이렇게 실행 후 stdin의 내용을 읽으려고 합니다.
if ( system("/home/jtm/test.sh") != 0 ) return 1; fgets(buf, BUFSIZE * 5, stdin)
이 구조가 잘못된 듯 한데 이 경우에는 어떻게 처리하는지도 알고 싶습니다.
Forums:
stdin으로 출력하는 건
stdin으로 출력하는 건 잘못된 겁니다. 쉘 스크립트에서는 일단 stdout으로 그냥 출력하게 하시구요.
첫번째 방법은, c program을 stdin에서 읽게 한 다음에 파이프를 사용해서 쉘에서 실행시키는 방법이 있겠구요.
script.sh | cprog 이런식으로요.
다른 방법으로는 popen(3)을 쓰는 방법이 있겠네요. 두번째 방법이 지금 구조에서는 더 나아보입니다.
system()을 쓰지 마시구 popen()을 쓰세요.
----
Let's shut up and code.
----
Let's shut up and code.
답변 감사합니다.
stdin 읽기전용 버퍼로 출력이 불가능한건가요?
말씀하신 후자의 방법으로 'stdout + popen()'으로 해결했습니다.
훨씬 더 심플해졌네요!
감사합니다.
네, 말씀하셨듯이
네, 말씀하셨듯이 stdin은 읽기전용이니까요.
잘 해결하셨다니 다행입니다. :-)
----
Let's shut up and code.
----
Let's shut up and code.
댓글 달기