execl称怪异的行为

时间:2014-02-27 19:52:14

标签: c exec fork

  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]);
}

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

我在execl电话中是否有错误?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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