我正在使用linux系统命令来杀死c文件中的某些进程。我只是想知道可能的不同返回值。当我搜索网络时,我不清楚。以下命令我在c。
中使用ret = system("pkill raj");
答案 0 :(得分:3)
来自手册页:
错误时返回的值为-1(例如fork(2)失败),以及 否则返回命令的状态。后者回归 status的格式为wait(2)中指定的格式。因此,命令的退出代码将是WEXITSTATUS(状态)。如果 无法执行/ bin / sh,退出状态将是退出(127)的命令。
因此,您需要检查WEXITSTATUS(ret)以获取pkill命令的返回值。
代码示例:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int status;
if(( status = system("kill -9 13043")) != -1){
fprintf(stdout, "kill command exit status: %d\n", WEXITSTATUS(status));
}
return 0;
}
答案 1 :(得分:0)
系统将返回pkill的退出状态,除非对系统的调用失败。 pkill返回这些有些荒谬的价值观,
EXIT STATUS
0 One or more processes matched the criteria.
1 No processes matched.
2 Syntax error in the command line.
3 Fatal error: out of memory etc.
如果进程的当前运行状态未知,则排除它们用于按模式终止进程的情况。例如,如果你运行'pkill raj'并获得返回值1,那是因为pkill无法匹配'raj'不是因为它无法杀死raj进程,这将导致返回值为0并出现错误stderr上的消息。出于这个原因,我建议不要使用pkill。使用pgrep匹配进程名称,一旦你有了pid,使用kill来杀死那个pid。