printf를 사용하여 stdout으로 메시지를 보내고 bash에서 실행중인 파일로 출력을 리디렉션하는 데 문제가 있습니다.bash에서 C 프로그램 출력을 리디렉션 할 때 문제가 발생했습니다.
이 나는 시도했다 : 각각의 경우에
./program argument >> program.out
./program argument > program.out
./program >> program.out argument
./program > program.out argument
는 파일 program.out이 만들어집니다하지만 비어 있습니다. 실행이 종료 한 후, 파일 크기는 프로그램 실행시 저는 재를 생략하면 0
이다 :
./program argument
그런 다음의 printf를 사용하여 표준 출력에 전송 된 모든 메시지는 상기 단말에 나타낸다.
나는이 방법으로 출력을 리디렉션하는 데 문제가없는 다른 C 프로그램을 가지고 있습니다. 프로그램 자체와 관련이 있습니까? 인수가 지나가고? 어디에서 문제를 찾아야합니까?
C 프로그램에 대한 몇 가지 세부 사항 : 그것은 그것은 POSIX 그것은위한 특별한 핸들러 함수를 할당
- sigaction을 사용하는 SIGINT 신호
- 많은 수의 개행 문자를 stdout으로 보냅니다. (플러시해야한다고 생각하는 사람들을 위해)
일부 코드 : 파일로 인쇄 할 때 반드시하지만, 터미널에 인쇄 할 때
int main(int argc, char** argv)
{
printf("Execution started\n");
do
{
/* lots of printf here */
} while (1);
/* Code never reached */
pthread_exit(EXIT_SUCCESS);
}
출력 재 지정없이 동일한 프로그램이 화면에 대한 출력을 생성합니까? – womble
나는 그것을 명확하게하기 위해 질문을 편집했다. 감사합니다. – mmutilva