2013-10-09 6 views
1

input.txt 파일에서 입력을 가져 와서 output.txt에 실행 결과를 기록하고 싶습니다. 올바른 순서는 무엇입니까? 아래는 작동하지 않습니다.터미널의 리디렉션 순서는 무엇입니까?

./a.out <input.txt> output.txt 

편집

내가이 기록 될 때까지 완료하기 위해 실행을 위해 기다려야합니까? 나는 보통 중간에 깨어서 실행 시간이 매우 길어서 o/p가 기록되는지 확인합니다.

설명 :

이 C 프로그램 (P1) × ./P2 < x를 사용하여 다른 C 프로그램 (P2)를 호출하는 시스템() 호출에 루프를 반복하며 루프가 값을 공급한다. 프로그램 P2는 x의 각 값에 대해 실행되고 화면에 출력됩니다. 나는 output.txt에 두 프로그램의 완전한 출력을 원한다.

+4

잘못된 질문을하고 있습니다. 명령은 부적합합니다. "작동하지 않으면"또 다른 문제가 있습니다. 당신이 기대하는 결과와 당신이 얻는 결과를 정확히 묘사하십시오. – sleske

+0

전혀 문제가되지 않습니다. – manasij7479

+0

./a.out

답변

2

명령이 종료되기 전에 명령을 죽이면 버퍼링 문제 일 수 있습니다. 라인 버퍼 된 터미널 출력 및 블록 버퍼 파일 출력은 C stdio 라이브러리의 기본 동작이므로 리디렉션을 사용하면 수 킬로바이트가 기록 될 때까지 출력이 버퍼링 될 수 있습니다.

일부 프로그램에는 라인 버퍼 또는 버퍼되지 않은 출력을 강제 실행하는 명령 행 옵션이 있습니다. 그들은 setvbuf를 호출하여이를 수행합니다. 그 a.out은 당신이 쓴 프로그램의 경우 프로그램이 당신없는 당신이 그것을 다시 컴파일 할 수없는 경우, 당신은 setvbuf(stdout, NULL, _IOLBF, 0);

을 추가 할 수 있습니다, stdbuf -oL ./a.out <in> out

stdbuf이뿐만 도움이 될 stdbuf라는 유틸리티가 종류의 kludge. 다른 옵션이 없으면 사용하지 않을 것입니다.

+0

우수. 의심스러운 것으로, 버퍼링 문제. – codepk

관련 문제