对子进程使用 exec 命令在 C 语言中执行 bin 程序



我希望我的子进程在父进程等待 3 秒并杀死孩子时执行 bin 程序。我知道很傻,但仍然必须这样做。在这里似乎无法正确使用可执行文件。我尝试运行日历,gedit等,只是对我不起作用。有什么建议吗?

   int main(int argc, char* argv[])
   {
    pid_t pid;
    pid = fork();
    if (pid == 0) { 
      execv("calc",argv);
      return 0;
    }
    else if (pid > 0) { /* parent process */
      sleep(3);
      kill(pid, SIGKILL);
      printf("Child process with the ID: %d has been killed by the parent process with the ID: %d...n", pid, getpid());
      return 0;
    }
}

man execv

execv()、execvp() 和 execvpe() 函数提供了一个指向以 null 结尾的字符串的指针数组,这些字符串表示新程序可用的参数列表。按照惯例,第一个参数应指向与正在执行的文件关联的文件名

所以 - 它不会通过路径搜索。您可以检查execv的返回值以查看其失败。

使用"/usr/bin/gedit"作为第一个参数,它应该可以工作。另请注意,在较旧的计算机上,三秒钟可能不足以看到程序正在运行。

相关内容

  • 没有找到相关文章

最新更新