2014-12-03 4 views
1

popen/system 또는 fork-exec 변형을 사용하지 않고 스레드를 생성하여 쉘 명령을 실행할 수 있습니까? 그 이유는 무엇?스레드를 사용하여 쉘 명령을 실행하십시오. C++

더 많은 컨텍스트를 제공하기 위해 스레드 중 하나가 셸 스크립트를 실행해야하는 다중 스레드 프로그램을 실행하고 있습니다. 현재는 popen()을 사용하고 있습니다. 그러나 멀티 스레드 프로그램에서 분기하는 것은 나쁜 습관으로 간주되기 때문에 스레드를 생성하여 동일하게 달성 할 수 있습니까?

+0

웹상에 예제가 없습니다. C++에서 스레드를 사용하여 셸 명령을 실행하는 방법에 대한 예제를 제공 할 수 있습니까? – user1715122

+0

이해가 안됩니다. "ls"명령을 실행하려면 C++에서 시스템 ("ls")을 수행 할 수 있습니다. 동일한 작업을 수행하기 위해 std 쓰레드를 사용하려면 어떻게해야합니까? – user1715122

+0

더 많은 컨텍스트를 제공하기 위해 하나의 스레드가 일부 셸 스크립트를 실행해야하는 다중 스레드 프로그램을 실행하고 있습니다. 현재, 나는 쉘 스크립트를 실행하기 위해 popen()을 수행한다. 멀티 스레드 프로그램에서 포크하고 싶지 않기 때문에 나쁘다. 그래서 포크를 사용하지 않고 쉘 스크립트를 어떻게 실행할 수 있는지 알고 싶습니다. 즉, 다른 스레드를 생성하고 쉘 스크립트를 실행할 수 있습니까? – user1715122

답변

1

여기에 멀티 스레딩 & 포크 + 간부 잠재적 인 문제에 대한 유용한 요약이다 : http://www.linuxprogrammingblog.com/threads-and-fork-think-twice-before-using-them

당신이 다른 프로그램, 심지어 쉘 스크립트를 실행하려는 경우, 당신은 포크 + 간부를 사용해야 할 것 같다가, 그것은 불가피 . 조심해서 포크와 같은 "나쁜"이벤트에 쓰레드를 준비하십시오. 또한 주 응용 프로그램에서 실행되는 특수한 단일 스레드 신뢰할 수있는 실행 도우미에서 모든 불필요한 파일 설명자를 닫을 수 있습니다 (문제가있는 경우).

관련 문제