我试图了解locale在Linux中的工作原理。这就是我认为它的工作原理:
每个进程都有一个环境变量表,您可以使用一些语言环境变量启动进程并为此进程设置一些环境变量(例如:LC_ALL=en_US.UTF-8
)。
但是如果这个新启动的进程想要查看它的语言环境变量是什么,它不会查看环境变量表,而是有一个单独的语言环境变量表,进程看起来像这样:
因此,如果进程想要使用在其环境变量表中设置的语言环境变量,则应首先将它们复制到其语言环境变量表中。例如,要将LC_ALL
变量从环境变量表复制到区域设置变量表中,该过程将执行以下操作:
setlocale (LC_ALL, "");
我的理解是否正确?如果我是正确的,所有进程都有一个语言环境变量表,或者这个表只出现在用C编写的程序中?