System ()을 통해 외부 프로그램 실행은 제대로 실행되지 않습니다.

StackOverflow https://stackoverflow.com/questions/1612451

  •  06-07-2019
  •  | 
  •  

문제

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 라이브러리에 있습니다남자 페이지를 참조하십시오

몇 가지 빠른 질문 :

  • 쉘에서 어떻게 실행합니까?
  • 시스템 명령에서 어떻게 실행합니까?
  • 시스템에 의해 반환 된 값은 얼마입니까?

터미널에서 정확한 복사 및 붙여 넣기가 바람직한 다음 영어 설명이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top