武汉嵌入式培训
达内武汉民大中心

15271940953

热门课程

武汉嵌入式培训:系统矩阵

  • 时间:2016-07-05
  • 发布:嵌入式学习网
  • 来源:嵌入式学习网

use constant USER_OP      = 'user';
use constant ADD_USER     = 'useradd';
use constant DELETE_USER  = 'userdel';
use constant CHANGE_USER  = 'usermod';
use constant GROUP_OP     = 'group';
use constant ADD_GROUP    = 'groupadd';
use constant DELETE_GROUP = 'groupdel';
use constant CHANGE_GROUP = 'groupmod';
# the groupadd/groupmod/groupdel/useradd/usermod/userdel
#     matrix for GNU/Linux
my %system_matrix = (
    linux = {
        CRON_OP() =  {
            name = '/usr/bin/crontab',
            username = '-u %s'
           },
        ADD_USER() = {
            name = ADD_USER,
            uid = '-u %s',
            gid = '-g %s',
            secondary_gid = '-G %s',
            homedir = '-d %s',
            shell = '-s %s',
            gecos = '-c %s',
           },
        CHANGE_USER() = {
            name = CHANGE_USER,
            uid = '-u %s',
            gid = '-g %s',
            secondary_gid = '-G %s',
            homedir = '-d %s',
            shell = '-s %s',
            gecos = '-c %s',
            username = '-l %s',
           },
        DELETE_USER() = {
            name = DELETE_USER,
            full = '-r',
           },
        ADD_GROUP() = {
            name = ADD_GROUP,
            gid = '-g %s',
           },
        CHANGE_GROUP() = {
            name = CHANGE_GROUP,
            gid = '-g %s',
           },
        DELETE_GROUP() = {
            name = DELETE_GROUP,
           },
       },
);

%system_matrix 中的每一项都以操作系统名称作为键。 例如,Linux 项的键是 linux 而 Solaris 项的键是 solaris 。为什么要使用小写版本呢?因为您应该仅使用 Perl $OSNAME 变量返回的名称。既然 Perl 会帮您确定 OS 名称,为什么还要另外创造一组 OS 名称呢?

%system_matrix 中的每一项都是一个散列引用,正如前面提到的那样,它们都以 $OSNAME 作为键。在特定于系统的散列中,键是操作的名称,在 cfperl 自身已将它们指定为常量。圆括号调用函数;从程序员的观点说,Perl 常量实际上是一个函数,编写该函数时不带圆括号只是为了方便。在这种情形下,省略圆括号会自动对散列键加引号,因此,举例来说, ADD_GROUP 应该是键 ADD_GROUP ,而不是所期望的键 groupadd ,后者是 ADD_GROUP 常量的值。

操作由常量引用,但其实际值容易引起一点混淆。例如,为什么使用 groupadd 而不使用 add group 呢?因为该值是用于实现该操作的 程序的最常见名称的速记。这样,Linux 和 Solaris 中的 useradd 命令将添加一个用户。为了方便起见,严格地执行了这一点。

特定于系统的 $system_matrix{$OSNAME} 散列中的值告诉 cfperl 如何运行用于用户和组管理的 OS 级程序。例如, ADD_USER 的项:
上一篇:使用 cfperl 进行用户管理
下一篇:“users check engines”功能的语法定义

武汉嵌入式培训:嵌入式如何系统学习

RTOS核心——调度和分割

向量中断与非向量中断

选择城市和中心
贵州省

广西省

海南省