处理posix_spawn()的错误

时间:2018-07-03 06:07:35

标签: c linux

我从here中使用posix_spaw()找到了一个示例代码。

在该页面中,run_cmd()的定义如下。

void run_cmd(char *cmd) {
    ...
    status = posix_spawn(&pid, "/bin/sh", NULL, NULL, argv, environ);
    if (status == 0) {
        printf("Child pid: %i\n", pid);
    } else {
        printf("posix_spawn: %s\n", strerror(status));
    }
}

我的问题是“可以将posix_spawn()的返回值作为参数提供给strerror()”。

如果还不行,那么处理posix_spawn()错误的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

是的,posix_spawn()成功返回0,失败返回errno。因此可以将结果传递到strerror

根据documentation

  

posix_spawn()posix_spawnp()函数仅在以下情况下失败          基础fork(2)vfork(2)调用失败的地方;在这些情况下,          这些函数返回错误号,该错误号将是          为fork(2)vfork(2)描述的错误。

     

此外,如果以下情况,这些功能将失败:

     

ENOSYS在此系统上不受支持。

从源头上还可以看到它只是返回errno