执行未从执行程序返回

问题描述 投票:0回答:1

我这样调用execvp函数:

 int return_status = execvp("./myprogram", argv + 2);
 printf("return status is %d", return_status);

./ myprogram确实运行,但是printf语句从不运行。为什么会这样呢?

c exec execvp
1个回答
1
投票

在您的示例中,如果execvp成功,则您的进程现在正在运行./myprogram。由于调用代码已被替换,因此无法返回调用代码。

execvp功能的目的是用指定的可执行文件的代码替换当前正在执行的代码。仅在失败时返回。如果需要两个进程,则需要首先调用fork,并让其子级调用execvp。您也可以使用systempopen之类的功能为您执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.