在系统调用

时间:2017-11-26 08:25:58

标签: c process operating-system system-calls kill

我正在使用以下方式从父母那里杀死一个孩子:

kill(pid, SIGTERM);

输出到终端

Terminated

如何在终端中显示“终止”?

pid_t pid ;
pid = fork();
if(pid == 0){ // pid is process index id in parent process
  wait(NULL); // wait for state changes in child 
  if(execlp(argv[1],argv[1],NULL) == -1){ // argv1 can be either valid or invalid (for example ls or alsjdf)
      char str[128];
      sprintf(str, "./multifork: %s",argv[1]);
      perror(str); 
      kill(pid, SIGINT);
  }
}

如果argv [1]不是合法的系统调用,我想退出所有程序 - 包括父程序和子程序,之后创建的程序。

1 个答案:

答案 0 :(得分:1)

你可以试试这个而不是杀戮指令:

sprintf(str, "kill -SIGINT %d >> /dev/null 2>&1",pid); 
system(str);

system用于在shell中执行命令。 “>> / dev / null 2>& 1”将打印重定向到/ dev / null,换句话说,丢弃打印答案(“已终止”)。