C++ 作为守护进程运行boost线程

C++ 作为守护进程运行boost线程,c++,daemon,boost-thread,C++,Daemon,Boost Thread,是否可以创建boost::thread并在后台运行它(作为守护进程)? 我正在尝试执行以下操作,但是当主线程退出时,我的线程就死了 /* * Create a simple function which writes to the console as a background thread. */ void countDown(int counter) { do { cout << "[" << counter << "]" &l

是否可以创建boost::thread并在后台运行它(作为守护进程)? 我正在尝试执行以下操作,但是当主线程退出时,我的线程就死了

/*
 * Create a simple function which writes to the console as a background thread.
 */
void countDown(int counter) {
    do {
        cout << "[" << counter << "]" << endl;
        boost::this_thread::sleep(seconds(1));
    }while(counter-- > 0);
}

int main() {
    boost::thread t(&countDown, 10);

    if(t.joinable()) {
        cout << "Detaching thread" << endl;
        t.detach(); //detach it so it runs even after main exits.
    }

    cout << "Main thread sleeping for a while" << endl;
    boost::this_thread::sleep(seconds(2));
    cout << "Exiting main" << endl;
    return 0;
}
/*
*创建一个简单函数,作为后台线程写入控制台。
*/
无效倒计时(整数计数器){
做{
cout当您的
main()
退出时,进程的所有其他线程都会终止(假设是Linux,不能说是Windows)


为什么不将
join()
作为
main()
末尾的后台线程?或者更好-将主线程用作“守护进程”线程?

谢谢,但是线程的用途是什么。detach()然后?我认为它允许线程在主线程退出后运行。有没有一种方法可以让我在后台运行,比如说10个线程而不加入它们..?如果我加入它们,那么我需要在后台使用nohup运行我的应用程序。分离线程是指线程的资源可以被释放和删除Ided,线程在脱离后就不存在了。@Rajat,读一下Linux进程和线程是如何工作的,你在这里有一些扭曲的假设。谢谢Nikolai。我想我现在明白了。