【问题标题】:execvp() system call in CC中的execvp()系统调用
【发布时间】:2012-12-23 02:30:55
【问题描述】:

执行 execvp() 系统调用时,如果调用成功,则不会返回。这是否意味着该过程永远不会终止?如果是这样,它是否始终处于运行状态? 我知道这是一个基本问题,但我认为当手册页中说“exec() 函数仅在发生错误时返回。返回值为 -1,并且errno 设置为指示错误。”

提前致谢!

【问题讨论】:

  • 如果你想运行另一个程序并返回,你可以使用system()函数,或者先fork()然后exec。

标签: unix operating-system system-calls


【解决方案1】:

execve,一旦成功,用另一个可执行文件完全替换当前正在执行的进程映像。所以函数永远不会返回,因为原始过程已经消失了。这几乎就像您在第一个过程中调用了 exit() 一样。

如果它*确实*返回,那么这显然意味着当前进程映像没有被替换,因为出现了问题。 errno 告诉你出了什么问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2014-01-14
    • 2021-07-24
    • 2016-02-09
    • 2021-11-05
    • 2012-02-02
    相关资源
    最近更新 更多