2017-09-07 1 views
0

프로세스에서 스레드를 시작하고 프로세스를 분리하고 프로세스를 종료하려고합니다. 그러나 스레드는 백그라운드에서 계속 실행됩니다. C++ 11에서이 문제를 해결할 수 있습니까?C++의 분리 스레드 11

나는 내 스레드를 이와 같이 분리했다 std :: thread (& thread_func, param1, param2) .detach();

그러나 프로세스가 종료되면 종료됩니다.

+0

는 프로세스가 종료 된 후 스레드가 실행 하시겠습니까 ...? –

+0

@VittorioRomeo 예, 프로세스가 종료 된 후에도 백그라운드에서 스레드를 실행하고 싶습니다. –

+1

@KishorBhandari : 스레드가 아니라 프로세스를 원할 것입니다. –

답변

2

백그라운드에서 실행하는 것과 분리가 다릅니다. 스레드를 분리하면 OS에 "스레드가 종료 된 후에 수동으로 스레드에 참여하고 싶지 않습니다. 나를 위해 알아서하십시오"라고 간단히 말하면됩니다. 그러나 메인 프로세스가 종료 될 때 OS는 대개 모든 하위 스레드/프로세스를 종료합니다.

그래서 원하는 것은 데몬 (deamon)을 실행하는 것입니다. 그러나 프로세스를 데몬으로 변환하는 것은 (스레드를 데몬화 할 수 없다는 것에주의하십시오) OS에 따라 다릅니다. 내가 Windows 또는 다른 OS에서 해당 작업을 수행하는 방법을 모르는

http://man7.org/linux/man-pages/man3/daemon.3.html

: 리눅스에서 당신은 daemon 함수를 호출 할 것이다. 또한 당신은이 글을 읽을 할 수 있습니다 :

Creating a daemon in Linux