2012-06-21 6 views
1

C 프로그램에서 system() 함수를 사용하여 문자열을 얻습니다. 그러나 system() 함수는 실제로 출력을 표시하고 정수 값 (성공적인 실행시 0)을 반환합니다. 하지만 내가 원하는 것은 system() 함수의 출력을 문자열 변수에 저장해야한다는 것입니다. 예 :은 system() 호출의 결과를 변수에 저장합니다.

char a[5]; 
a = system("echo \"hi\""); 
printf("The string is: %s",a); 

a 값을 저장 hi 및 출력이 The string is: hi 이 도와주세요이며 이런 종류의 일. 미리 감사드립니다. 운영 플랫폼 : Linux

+2

가능한 중복 [system() 호출의 출력을 저장하는 방법?] (http://stackoverflow.com/questions/5549448/how-to-store-the-output-of-system-call) –

답변

4

system 대신 popen을 사용해야합니다. 출력을 문자열에 직접 저장하지는 않습니다 - 자식에서 출력을 읽을 수있는 파일 핸들을 제공합니다. 거기에서 데이터를 읽으려면 fgets과 같은 것을 사용하는 것이 좋습니다.

2

시스템()은 종료 상태 만 제공합니다.

STDOUT에 인쇄 된 것을 얻으려면 읽을 수있는 다른 파일 설명자가 있어야하며이 출력을 캡처해야합니다. 일반적으로 fork 이전에 pipe() 명령 (연결 된 설명자 생성)을 수행 한 다음 dup(pipin, 0)을 입력하면 pipe()의 출력 중 하나가 자식 프로세스의 STDOUT이됩니다.

popen()도 도움이 될 수 있습니다.

관련 문제