当前位置: 技术问答>linux和unix
子线程中调用 execl的问题
来源: 互联网 发布时间:2016-04-05
本文导语: 我在程序中创建了一个子线程,子线程中只有一条语句,用execl调用一条系统命令。 可是命令调用成功后主线程没有运行(是不是死锁了)。如果命令调用失败的话程序就退出了。为什么啊? | ...
我在程序中创建了一个子线程,子线程中只有一条语句,用execl调用一条系统命令。
可是命令调用成功后主线程没有运行(是不是死锁了)。如果命令调用失败的话程序就退出了。为什么啊?
可是命令调用成功后主线程没有运行(是不是死锁了)。如果命令调用失败的话程序就退出了。为什么啊?
|
pthread_create(&ID,NULL,fun,NULL);
void *fun()
{
if (0 == fork()) {
execl(XXXXXXXXXXXXXXXXXX);
}
}
void *fun()
{
if (0 == fork()) {
execl(XXXXXXXXXXXXXXXXXX);
}
}
|
线程与进程的区别, 你一个线程exec替换了进程空间,主线程自然不能再正常运行了吧,除非是多进程。
|
fork 再exec,而不是pthread_creat再exec
|
你这样不是多占了一大堆的资源?这里每开一个进程都增加了一个线程,但这个线程在这里什么用处都没有。应该是不好吧,不是不行。
|
8楼框架如此
而我以前的实际处理中,子线程是有些事情要做的。
哪怕子线程不做事情,就这么结束掉,对子进程也没有任何影响。
13楼问什么时候结束子线程,当然是fork完了就结束掉,因为和fork无关,没写出来。
就算waitpid再结束也问题不大。
12楼所说的确有道理,不过,有些时候的确是需要用线程池做点事情的。当然,对于楼主的程序来说,这个开线程的处理属于无聊的事情,不做也罢。
而我以前的实际处理中,子线程是有些事情要做的。
哪怕子线程不做事情,就这么结束掉,对子进程也没有任何影响。
13楼问什么时候结束子线程,当然是fork完了就结束掉,因为和fork无关,没写出来。
就算waitpid再结束也问题不大。
12楼所说的确有道理,不过,有些时候的确是需要用线程池做点事情的。当然,对于楼主的程序来说,这个开线程的处理属于无聊的事情,不做也罢。