【问题标题】:how to use waitpid() to get the status of child process?如何使用 waitpid() 获取子进程的状态?
【发布时间】:2015-10-06 21:38:24
【问题描述】:

我正在尝试获取子进程的状态。例如,当我运行不存在的命令“adjsafkl”时,系统会打印“错误”,但是当我运行文件夹也不存在的“cp sssa”时,系统不会将此命令标记为错误。我想知道有没有办法解决这个错误?

【问题讨论】:

    标签: c++ system-calls


    【解决方案1】:

    您可以在 WIFEXITED 之后检查 WEXITSTATUS:

    WIFEXITED:如果孩子正常终止,则返回true, 也就是说,通过调用 exit(3) 或 _exit(2),或通过从 main() 返回。

    WEXITSTATUS:返回孩子的退出状态。 这由状态的最低有效 8 位组成 子进程在调用 exit(3) 或 _exit(2) 时指定的参数 或作为 main() 中的 return 语句的参数。这个宏 仅当 WIFEXITED 返回 true 时才应使用。

    【讨论】:

    • 感谢您的回答,实际上我试过了,但它也不起作用:(
    • 什么不起作用?如果你用错误的数据 bash cp,它应该以值 '1' 退出。
    • 是的,但是当我添加一些像“ls -ffjaskaf”这样的参数时,返回值为0
    • @TonyHello 不,不是。在我的 linux 风格中,它是“2”,使用“ls -ffjaskaf”,然后使用“echo $?”。
    • 我明白了!!!你说的对!非常感谢您的回答,祝您有美好的一天:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多