【问题标题】:execl call weird behaviourexecl 调用奇怪的行为
【发布时间】:2014-02-27 19:52:13
【问题描述】:
  if (fork_return==0)
{
  printf("FROM THE CHILD PROCESS \n");
  //print process id
  printf("The child id is: %d \n", (int) getpid ());
  //parent id
  printf("The parent id is: %d \n", (int) getppid ());
  //group id
  printf ("The group id is: %d \n", (int) getpgrp ());
  printf("\n");

  //call cat function
  execl("/bin/cat","cat",argv[1]);
}

所以我遇到的奇怪问题是,当将 execl 调用放在所有这些 printf 调用的末尾时,它不会做任何事情。但是,当我将上面的 execl 调用放在所有 printf 函数的顶部时,它会按预期工作。

我在 execl 调用中是否犯了错误?

谢谢!

【问题讨论】:

  • execl 的最后一个参数应该是一个指向 NULL 的指针。
  • 请记住,exec 系列函数可能会失败(就像几乎任何其他系统调用一样),然后 do 返回值 -1。当系统调用失败时照常执行,并打印错误。
  • 是的,问题是我忘记了 NULL。谢谢约翰!

标签: c exec fork


【解决方案1】:

您的execl 需要将(char *)NULL 作为最后一个参数

execl("/bin/cat", "cat", argv[1], (char *)NULL);

【讨论】:

    猜你喜欢
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多