【问题标题】:Using exec commands for a child process to execute a bin program in C使用 exec 命令让子进程在 C 中执行 bin 程序
【发布时间】:2016-05-31 02:52:58
【问题描述】:

我希望我的子进程在我的父母等待 3 秒并杀死孩子时执行 bin 程序。傻我知道,但还是得做。似乎无法在这里正确使用 execv。我尝试运行日历、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;
    }
}

【问题讨论】:

标签: c process operating-system exec child-process


【解决方案1】:

来自man execv

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

所以 - 它不会通过 PATH 进行搜索。您可以检查execv 的返回值以查看它是否失败。

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

【讨论】:

  • 虽然一般来说是一个糟糕的 ida 并且理所当然地被讨厌,但您可以只需使用 system() 来生成您的应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
  • 2014-06-22
相关资源
最近更新 更多