2

在一本关于 Linux 和 Unix 编程的书中,我发现了这个陈述(强调我的):

"所有函数( exec()-family)都在出错的情况下返回-1。否则在成功执行时不会返回调用程序。因此,检查返回值是多余的;您可以直接继续执行错误例程。 "

这似乎符合相应的 Linux手册页

"返回值 -exec()函数仅在发生错误时返回。返回值为-1, 并errno设置为指示错误。 "

因此,如果当前过程映像已成功替换为新的过程映像,则不应返回。只有在创建新图像时发生错误时,exec()-functions 之一才会真正返回 ( -1)。


反过来,而不是 fe 意味着:

if ( execl("/bin/foo", "foo", "bar", (char *) NULL) == -1 )
{
    perror("Execution of foo failed");
    // further error routine.
}

一个人可以简单地做:

execl("/bin/foo", "foo", "bar", (char *) NULL);

perror("Execution of foo failed");
// further error routine.

  • exec()但是,如果调用者的进一步程序执行已经表明发生了错误,为什么 -family 的函数通常会有返回值呢?

  • 函数末尾的简单return;语句和相应的返回类型void就足够了吗?

  • 只是为了适应常用方法/实践来始终检查返回值还是有不同的目的?


有关的:

4

0 回答 0