【问题标题】:Execution not returning from exec [duplicate]执行未从 exec 返回 [重复]
【发布时间】:2020-05-12 10:10:15
【问题描述】:

我这样调用 execvp 函数:

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

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

【问题讨论】:

  • 这就是 exec 所做的。
  • ./myprogram 删除为文件(或使其不可执行),您将看到打印的消息。

标签: c exec execvp


【解决方案1】:

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

execvp 函数的目的是将当前正在执行的代码替换为指定可执行文件的代码。它仅在失败时返回。如果你想要两个进程,你需要先调用fork,然后让子进程调用execvp。您还可以使用 systempopen 等函数为您执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-27
    • 2014-11-13
    • 2011-11-02
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多