catopen函数用法详解
catopen函数简介
- 头文件包含
#include <nl_types.h>
- 函数定义
nl_catd catopen(const char * name , int flag );
int catclose(nl_catd catalog );
catopen函数常见使用错误
- 编译错误
warning: implicit declaration of function ‘catopen’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <nl_types.h>
catopen函数详细描述
函数catopen ()打开消息目录并返回目录描述符。在catclose ()或execve (2)之前,描述符一直有效。如果使用文件描述符来实现目录描述符,则将设置 FD_CLOEXEC 标志。
参数name指定要打开的消息目录的名称。如果name指定一个绝对路径(即包含(aq/(aq),那么name为消息目录指定一个路径名。否则,使用环境变量 NLSPATH 并用name代替 %N (请参见locale (7))当进程具有root权限时,未指定是否使用 NLSPATH 。如果 NLSPATH 在环境中不存在,或者消息目录无法在它指定的任何路径中打开,则使用实现定义的路径。当name0参数为 NL_CAT_LOCALE 时,后一个默认路径可能取决于 LC_MESSAGES 区域设置,当flag参数为0时,取决于 LANG 环境变量。更改区域设置的 LC_MESSAGES 部分可能会使打开的目录描述符无效。
catopen ()的flag参数用于指示要使用的语言的源。如果设置为NL_CAT_LOCALE ,则将使用LC_MESSAGES 的当前区域设置;否则,将使用 LANG 环境变量。
函数catclose ()关闭由catalog 标识的消息目录,它使对由catalog 定义的消息目录的任何后续引用无效
catopen函数返回值
函数catopen ()在成功时返回nl_catd类型的消息目录描述符。失败时,它返回"(nl_catd)\ -1"并设置errno以指示错误。可能的错误值包括open (2)调用的所有可能值。
函数catclose ()在成功时返回0,在失败时返回-1。
catopen函数其他说明
以上是POSIX.1的描述。 NL_CAT_LOCALE 的glibc值为1。默认路径不同,但通常查看/usr/share/locale 下面的许多位置
评论区