在该页面中,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()错误的最佳方法是什么?
发布于 2018-07-03 06:20:51
是的,posix_spawn()在成功时返回0,在失败时返回errno。因此,可以将其结果传递给strerror。
根据文档
posix_spawn()和posix_spawnp()函数只有在底层fork(2)或vfork(2)调用失败时才会失败;在这些情况下,这些函数返回一个错误号,这将是为fork(2)或vfork(2)描述的错误之一。 此外,如果: 此系统不支持ENOSYS函数。
另外,从源代码中可以看到,它只是返回errno。
https://stackoverflow.com/questions/51147640
复制相似问题