System ()을 통해 외부 프로그램 실행은 제대로 실행되지 않습니다.
문제
System () 호출에서 명령을 호출하여 내 코드에서 프로그램을 호출하려고합니다.
쉘에서 문자열을 직접 실행하면 의도 한대로 작동하지만 System ()을 통해 동일한 문자열을 시도하면 프로그램이 의도 한 결과없이 훨씬 더 빨리 반환됩니다. 출력 파일은 생성되지만 파일 크기는 0입니다. 반환 된 오류 코드도 0입니다. "> output.log 2> error.log"를 추가하려고했지만 이러한 파일은 생성되지 않았습니다.
환경 변수 나 경로와 관련이 있다고 생각합니다 ...
출력 파일 이름은 출력 리디렉션이 아닌 -o 명령 줄 매개 변수를 통해 제공됩니다.
Popen 명령이 내 사용 사례에 더 적합 할 가능성이 있지만 찾을 수 없습니다. 어떤 라이브러리는 어디에서 왔습니까?
해결책
이러한 문제의 가장 일반적인 원인은 잘못된 환경 변수 설정입니다. ~/.bashrc
.
당신은 무엇을 볼 수 있어야합니다 ncbi
실행에 대해 불행합니다
$SHELL -c '<exact string you pass to system()>'
이것을 디버깅하는 또 다른 일반적인 방법은 다음과 같습니다 strace
. 실행하다:
strace -fo /tmp/strace.out ./myProgram
그리고 들어보세요 /tmp/strace.out
단서.
다른 팁
당신이 원하지 않는 이유가 있습니까? fork
그리고 exec
? 이것은 한 프로세스를 다른 프로세스로부터 실행하기위한 일반적인 관용구입니다.
Popen은 표준 C 라이브러리에 있습니다남자 페이지를 참조하십시오
몇 가지 빠른 질문 :
- 쉘에서 어떻게 실행합니까?
- 시스템 명령에서 어떻게 실행합니까?
- 시스템에 의해 반환 된 값은 얼마입니까?
터미널에서 정확한 복사 및 붙여 넣기가 바람직한 다음 영어 설명이 좋습니다.
제휴하지 않습니다 StackOverflow