gpt4 book ai didi

c - system() 的返回码

转载 作者:太空狗 更新时间:2023-10-29 16:51:44 25 4
gpt4 key购买 nike

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main() {

int res = system("ps ax -o pid -o command | grep sudoku | grep gnome > /dev/null");

printf("res = %d \n", res);

return 0;
}

我想通过检查 system()(或与此相关的任何其他调用)的返回码来查看 sudoku 是否正在运行。我不想在任何地方打印任何输出。

即使看了man page,我也不太明白system() 的返回码

无论 sudoku 是否正在运行,我都会得到 res = 0

最佳答案

首先,您应该使用 WEXITSTATUS(res)。该标准明确指出:

If command is not a null pointer, system() shall return the termination status of the command language interpreter in the format specified by waitpid().

我怀疑问题是命令实际上成功了(grep 发现自己)。暂时不要重定向输出:

[cnicutar@fresh ~]$ ./test
989 sh -c ps ax -o pid -o command | grep sudoku | grep gnome
res = 0

因此,由于每个命令都成功执行,返回码将为 0 :-)。如果使用 pgrep 等,您可能会运气更好。

关于c - system() 的返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com