终止系统调用后删除终端消息

Remove terminal mesage after kill system call

我正在使用 parent 从 parent 杀死一个 child:

kill(pid, SIGTERM);

它输出到终端

Terminated

终端怎么不显示"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] 不是合法的系统调用,我想退出所有程序 - parent 和 children,它们都是在那之后创建的。

你能试试这个而不是 kill 指令吗:

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

系统用于执行shell中的命令。 ">> /dev/null 2>&1" 正在将打印重定向到 /dev/null,换句话说就是放弃打印答案 ("terminated")。