返回POSIX函数的值

时间:2016-12-20 09:49:48

标签: c posix return-value standards-compliance

我尝试编写两个兼容POSIX的操作系统共享的POSIX兼容代​​码,即QNX和Linux版本。

我刚刚发现函数返回值的规范存在细微差别,例如: pthread_mutex_trylock()。一个文档说它返回EOK(评估为0)另一个文档说它在成功的情况下返回普通0

我假设我可以安全地查看返回值== 0!= 0,并避免使用QNX EOK宏。

我的问题:

  1. POSIX是否明确定义了在成功和/或错误的情况下函数必须返回哪些值?
  2. 严格来说,是指定返回EOK(不是0)POSIX兼容的函数吗?
  3. EOK是否属于某些标准?

1 个答案:

答案 0 :(得分:3)

  1. 有POSIX手册页,请查阅它们以了解函数的POSIX定义。例如:http://www.unix.com/man-page/all/3posix/pthread_mutex_trylock/。通常,POSIX非常一致,并且在返回值仅用于表示成功或失败的所有情况下,0表示成功。
  2. 如果EOK等于0,则QNX实施符合POSIX标准。但是,如您所说,在您自己的代码中使用0以确保它在所有平台上编译。
  3. 据我所知,它不属于独立于平台的标准。要么你避免使用它,要么你认为EOK更清楚,那么你可以在你的程序中写下这个:
  4. #ifndef EOK
    #define EOK 0
    #endif