2017-10-12 2 views
0

MJPG-Streamer가 설치되었고 C 프로그램에서이 프로그램을 실행하고 싶습니다. 나는 파이 터미널에 다음 코드를 들어가는 MJPG - 스 트리머를 시작C 프로그램에서 pi 명령 실행

LD_LIBRARY_PATH=/usr/local/lib mjpg_streamer -i "input_file.so -f /tmp/stream -n pic.jpg" -o "output_http.so -w /usr/local/www" 

나는 C 프로그램에서 MJPG 트리머를 실행하려면, 이걸 어떻게해야합니까?

감사합니다.

+2

'system()'함수를 사용하십시오. – Barmar

+1

'system ("LD_LIBRARY_PATH ...")'와 함께. –

답변

1

함수를 stdlib 헤더 내에 사용할 수 있습니다.

1

나는 system()이 정상적으로 작동 할 것이라고 확신하지만, 특히 다른 쉘을 생성 할 때의 메모리 및 CPU 오버 헤드가 바람직하지 않은 임베디드 응용 프로그램과 같은 상황에서 사용하는 것에 대해 불편 함을 느낍니다. . 또한 system()에서 프로세스 ID를 가져 오지 않으므로 나중에 하위 프로세스와 상호 작용해야 할 수 있습니다.

더 많은 작업이 있지만 fork() 다음에 execle()을 사용하는 것이 더 멋지다고 생각합니다. 새 프로세스에서 LD_LIBRARY_PATH이 설정되어야하므로 환경 인수를 사용하는 exec 변형이 필요합니다. 조금은 어리 석었지만 처음부터 환경을 구축하는 대신 부모 환경에서 새로운 프로세스 환경을 만들기 위해 envz_xxx 함수 군을 사용할 수 있습니다.

솔직하게 말해서 system() 자신을 사용하고 싶지만 "어려운"방법을 사용하면 장기적으로 더 많은 유연성을 제공 할 수있을뿐만 아니라 약간 더 빠르고 메모리를 더 효율적으로 사용할 수 있습니다.