Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Process execv是否会像这样替换当前进程?_Process_Posix_System Calls_Execv - Fatal编程技术网

Process execv是否会像这样替换当前进程?

Process execv是否会像这样替换当前进程?,process,posix,system-calls,execv,Process,Posix,System Calls,Execv,如果在我的代码中,我要调用execv,然后在调用execv之后,我有几行代码,这些代码行会被执行,还是不会被执行,因为execv启动的任何程序都会替换当前进程?除非execv()调用失败,否则它们不会被执行execv()完全替换调用它的进程中运行的程序。除非execv()调用失败,否则它们不会被执行execv()完全替换调用它的进程中运行的程序。它们不会被执行,除非您分叉线程并仅对其中一个调用execv。它们不会被执行,除非您分叉线程并仅对其中一个调用execv。即使在这种情况下也不会。POSI

如果在我的代码中,我要调用execv,然后在调用execv之后,我有几行代码,这些代码行会被执行,还是不会被执行,因为execv启动的任何程序都会替换当前进程?

除非
execv()
调用失败,否则它们不会被执行
execv()
完全替换调用它的进程中运行的程序。

除非
execv()
调用失败,否则它们不会被执行
execv()
完全替换调用它的进程中运行的程序。

它们不会被执行,除非您分叉线程并仅对其中一个调用execv。

它们不会被执行,除非您分叉线程并仅对其中一个调用execv。

即使在这种情况下也不会。POSIX说,“从一个具有多个线程的进程调用任何exec函数都会导致所有线程终止,并加载和执行新的可执行映像。”这是一个好的捕获。谢谢你的提醒!即使在那种情况下也不行。POSIX说,“从一个具有多个线程的进程调用任何exec函数都会导致所有线程终止,并加载和执行新的可执行映像。”这是一个好的捕获。谢谢你的提醒!我将重新标记这一点来移除C++并添加POSIX和系统调用键。C和C++没有关于ExcV*()的特定内容。我正在重新标记这一点来移除C++并添加POSIX和系统调用键。ExcV*()没有C和C++的特定内容。我注意到通常情况下是这样,但是如果我用Excv运行睡眠,那么它将继续执行以下几行。为什么?@z-buffer,如果
execv()
返回,则表示失败;如果你检查返回值,你会发现它是-1。查看
errno
了解原因。但无论如何,分叉并执行睡眠程序并没有多大意义——子进程除了存在一段时间之外不会做任何事情。如果要让父级等待它实现延迟,只需使用
sleep()
函数即可。我注意到通常情况是这样的,但是如果我使用execv运行sleep,它将继续执行以下行。为什么?@z-buffer,如果
execv()
返回,则表示失败;如果你检查返回值,你会发现它是-1。查看
errno
了解原因。但无论如何,分叉并执行睡眠程序并没有多大意义——子进程除了存在一段时间之外不会做任何事情。如果要让父级等待它实现延迟,只需使用
sleep()
函数即可。