我从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()
错误的最佳方法是什么?
答案 0 :(得分:2)
是的,posix_spawn()
成功返回0
,失败返回errno
。因此可以将结果传递到strerror
。
posix_spawn()
和posix_spawnp()
函数仅在以下情况下失败 基础fork(2)
或vfork(2)
调用失败的地方;在这些情况下, 这些函数返回错误号,该错误号将是 为fork(2)
或vfork(2)
描述的错误。此外,如果以下情况,这些功能将失败:
ENOSYS
在此系统上不受支持。
从源头上还可以看到它只是返回errno
。