【发布时间】: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。谢谢约翰!