根据所使用的终端和终端仿真器的不同,您可能需要将某些特定代码集的 STREAMS 模块 Push 到流上。
有关 STREAMS 模块和一般流的详细信息,请参见《STREAMS Programming Guide》。
下表 显示在终端环境中受 en_US.UTF-8 语言环境支持的 STREAMS 模块。
表 5–7 en_US.UTF-8 所支持的 32 位 STREAMS 模块
32 位 STREAMS 模块 |
说明 |
---|---|
/usr/kernel/strmod/u8lat1 |
UTF-8 和 ISO8859–1 (西欧语言)之间的代码转换 STREAMS 模块 |
/usr/kernel/strmod/u8lat2 |
UTF-8 和 ISO8859–2 (东欧语言)之间的代码转换 STREAMS 模块 |
/usr/kernel/strmod/u8koi8 |
下表列出 en_US.UTF-8 所支持的 64 位 STREAMS 模块。
表 5–8 en_US.UTF-8 所支持的 64 位 STREAMS 模块
64 位 STREAMS 模块 |
说明 |
---|---|
/usr/kernel/strmod/sparcv9/u8lat1 |
UTF-8 和 ISO8859-1(西欧语言)之间的代码转换 STREAMS 模块 |
/usr/kernel/strmod/sparcv9/u8lat2 |
UTF-8 和 ISO8859-2(东欧语言)之间的代码转换 STREAMS 模块 |
/usr/kernel/strmod/sparcv9/u8koi8 |
UTF-8 和 KOI8-R(西里尔文)之间的代码转换 STREAMS 模块 |
要确定您使用的是 64 位 Solaris 还是 32 位 Solaris 系统,请使用 isainfo(1) 公用程序,如下所示:
system# isainfo -v 64-bit sparcv9 applications 32-bit sparc applications
如果该命令返回此信息,则您所运行的是 64 位 Solaris 系统。如果运行的是 32 位 Solaris 系统,则此公用程序将显示以下内容:
system# isainfo -v 32-bit sparc applications
使用 modinfo(1M) 来确保您的系统尚未装入 STREAMS 模块:
system# modinfo | grep modulename
如果已安装了 STREAMS 模块(如 u8lat1), 则输出将类似于以下内容:
system# modinfo | grep u8lat1 89 ff798000 4b13 18 1 u8lat1 (UTF-8 <--> ISO 8859-1 module)
如果该模块已安装,您就无须再装入它了。但如果该模块尚未装入,请使用 modload(1M),如下所示:
system# modload /usr/kernel/strmod/u8lat1
该命令将 32 位 u8lat1 STREAMS 模块装入到内核中,这样您就可以将其推 (Push) 入流中。如果您所运行的是 64 位 Solaris 产品,请使用 modload(1M),如下所示:
system# modload /usr/kernel/strmod/sparcv9/u8lat1
STREAMS 模块已装入到内核中,此时您就可以将其推入到流中了。
要从内核中卸下一个模块,请使用 modunload(1M),如下所示。在此示例中,u8lat1 模块正被卸下。
system# modinfo | grep u8lat1 89 ff798000 4b13 18 1 u8lat1 (UTF-8 <--> ISO 8859-1 module) system# modunload -i 89
与 Solaris 操作环境以前的版本不同,支持输入和输出 UTF-8 代码集的 dtterm(1) 终端和任何其它终端在它们的流中无需任何附加的 STREAMS 模块。ldterm(7M) 模块现在是与代码集无关的,并且还支持 Unicode/UTF-8。
要为 Unicode 语言环境设置正确的终端环境,请使用 stty(1) 公用程序。 要查询当前的设置,请使用 stty(1) 公用程序的 -a 选项,如下所示:
system% /bin/stty -a
由于 /usr/ucb/stty 未经国际化,因此请改用 /bin/stty。
对于仅支持 Latin-1 (ISO8859-1)、Latin-2 (ISO8859-2) 或 KOI8-R 的终端,您应具有下列 STREAMS 配置:
head <-> ttcompat <-> ldterm <-> u8lat1 <-> TTY
此配置仅适用于支持 Latin-1 的终端。 对于 Latin-2 终端,请将 STREAMS 模块 u8lat1 替换为 u8lat2。对于 KOI8-R 终端,请将该模块替换为 u8koi8。
确保已将 STREAMS 模块装入到了内核中。
要设置以上显示的 STREAMS 配置,请使用 strchg (1M),如此示例的第二个命令行所示:
system% cat> tmp/mystreams ttcompat ldterm u8lat1 ptem ^D system% strchg -f /tmp/mystreams
确保在使用 strchg(1) 时您是超级用户或此设备的属主。要查看当前配置,请使用 strconf(1),如下所示:
system% strconf ttcompat ldterm u8lat1 ptem pts system%
要复位原始配置,请按下列方式设置 STREAMS 配置:
system% cat> /tmp/orgstreams ttcompat ldterm ptem ^D system% strchg -f /tmp/orgstreams
假定必要的 STREAMS 模块已装入到内核中,您可以将下列各行保存在 .cshrc 文件(C shell 示例)中以便于使用:
setenv LANG en_US.UTF-8 if ($?USER != 0 && $?prompt != 0) then cat>! /tmp/mystreams$$ << _EOF ttcompat ldtterm u8lat1 ptem _EOF /bin/strchg -f /tmp/mystreams$$ /bin/rm -f /tmp/mystreams$$ /bin/stty cs8 -istrip defeucw endif
在 .cshrc 文件中有了这几行后,您就不必在每次使用 STREAMS 模块时都要键入所有这些命令了。请注意,第二个 _EOF 应从该文件的第一列开始。