有没有办法在c中运行任何exec系列函数作为线程

gva*_*o87 3 c multithreading pthreads process exec

我认为问题是不言自明的.

我知道exec运行在另一个进程上,所以如果我想要一个目录,我会做那样的事情.

int pid;
if((pid = fork()) != -1) {
     if(!pid) {
         execl("/bin/ls", "-a", "-l", (char *) 0);
     } else {
         wait(&status);
     }
} else //error
Run Code Online (Sandbox Code Playgroud)

如果你想创建一个进程,那很好,但线程呢?我虽然冷杉创建线程然后exec函数,但这将使我刚刚创建的线程有两个进程

Oli*_*rth 6

这没有意义.线程彼此共享相同的地址空间(包括程序代码); 两个独立的可执行文件不可能在同一个进程中共存,因为它们只是相互破坏.


cas*_*nca 5

这是不可能的,exec只会用指定的可执行文件替换当前进程,因此您的原始进程不再存在。此外,进程是比线程更高的执行单元,因此“在另一个线程中运行进程”是没有意义的。

  • +1 表示“大小”等级 - 就像说你想在浴室里建一所房子,或者在你的引擎里建一辆车...... (4认同)
  • 好点,但是,作为我的肛门保留挑剔者:-),我想指出 `exec` 不会替换当前进程,它会替换进程中当前的 _program_。原来的_process_ 仍然存在,只是加载了一个新的_program_。 (3认同)