Return 个 POSIX 个函数的值
Return values of POSIX functions
我尝试编写在两个 POSIX 兼容操作系统(即 QNX 和 Linux 变体)之间共享的 POSIX 兼容代码。
我刚刚发现函数 return 值的规范存在细微差异,例如pthread_mutex_trylock()
个。一份文件说它 returns EOK
(计算结果为 0
),另一份文件说它 returns plain 0
如果成功。
我假设我可以安全地检查 return 值 == 0
或 != 0
并避免 QNX EOK
宏。
我的问题:
- POSIX 是否明确定义了在成功 and/or 错误的情况下哪些值必须由函数 return 编辑?
- 严格来说,是指定给return
EOK
(不是0
)POSIX的函数吗?
EOK
是某些标准的一部分吗?
- 有 POSIX 手册页,查阅它们以找出函数的 POSIX 定义是什么。例如:http://www.unix.com/man-page/all/3posix/pthread_mutex_trylock/。总的来说,POSIX是非常一致的,在所有情况下,return值只是用来表示成功或失败的,
0
表示成功。
- 如果
EOK
等于 0
,则 QNX 实现是 POSIX 兼容的。但是,正如您已经说过的,在您自己的代码中使用 0
以确保它可以在所有平台上编译。
- 据我所知,它不是独立于平台的标准的一部分。要么你避免使用它,要么你认为
EOK
更清楚,那么你可以在你的程序中这样写:
.
#ifndef EOK
#define EOK 0
#endif
我尝试编写在两个 POSIX 兼容操作系统(即 QNX 和 Linux 变体)之间共享的 POSIX 兼容代码。
我刚刚发现函数 return 值的规范存在细微差异,例如pthread_mutex_trylock()
个。一份文件说它 returns EOK
(计算结果为 0
),另一份文件说它 returns plain 0
如果成功。
我假设我可以安全地检查 return 值 == 0
或 != 0
并避免 QNX EOK
宏。
我的问题:
- POSIX 是否明确定义了在成功 and/or 错误的情况下哪些值必须由函数 return 编辑?
- 严格来说,是指定给return
EOK
(不是0
)POSIX的函数吗? EOK
是某些标准的一部分吗?
- 有 POSIX 手册页,查阅它们以找出函数的 POSIX 定义是什么。例如:http://www.unix.com/man-page/all/3posix/pthread_mutex_trylock/。总的来说,POSIX是非常一致的,在所有情况下,return值只是用来表示成功或失败的,
0
表示成功。 - 如果
EOK
等于0
,则 QNX 实现是 POSIX 兼容的。但是,正如您已经说过的,在您自己的代码中使用0
以确保它可以在所有平台上编译。 - 据我所知,它不是独立于平台的标准的一部分。要么你避免使用它,要么你认为
EOK
更清楚,那么你可以在你的程序中这样写:
.
#ifndef EOK
#define EOK 0
#endif