赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 单片机与嵌入式

首页 > 专业技术 > 单片机与嵌入式 > Linux系统介绍
Linux系统介绍
  1. Linux发展简介
  2. Shell与shell命令
  3. Linux常用shell命令
  4. Linux主要的系统调用

1. Linux发展简介:

Linux内核最初是由芬兰人Linus Benedict Torvalds在赫尔辛基大学上学时编写的,1991年第一次发布Linux内核,随后采用GPL协议,以后越来越多的程序员加入Linux内核代码的编写和修改工作。目前Linux系统在服务器和超级计算机领域占据绝对主导地位,在手机、车载终端、智能电视等嵌入式设备上也占据很大市场。
Linux源于Unix系统,这是AT&T贝尔实验室的Ken Thompson和Dennis Ritchie于1971年在一台PDP-11/24上开发的。Ken在参与麻省理工、AT&T贝尔实验室和通用电气合作进行的用于GE-645大型机的操作系统Multics时编写了一个Space Travel游戏,但后来Multics项目失败,为了能使游戏运行,就在一台PDP-7上用汇编写了一个操作系统原型,目的是运行此游戏。这个操作系统因为使用汇编开发,在不同的计算机上难以移植,1973年,Ken Thompson和Dennis Ritchie用C语言重新编写了这个系统,并在相关领域引起兴趣,后来的第5版提供给各大学用来教学使用,此后各大学及公司通过对UNIX进行改进和扩展,使其流行起来。
1978年,加州大学伯克利分校推出改进的UNIX版本BSD,而AT&T则将UNIX商业化变成产品,从此形成UNIX两大分支。后来BSD的主要开发者之一的Bill Joy在BSD基础上开发了SunOS,后来还创办了Sun微系统公司。
因为UNIX为商业软件,价格昂贵,荷兰人Andrew S. Tanenbaum于1987年开发了主要用于学生学习操作系统的MINIX,免费使用。Linus Benedict Torvalds在大学学习时不满足MINIX的性能,就写了一个内核并在新闻组发布了消息,还将新的操作系统上传服务器,管理员为此系统以Linus的谐音取名Linux。
Linux有两种版本,一种是内核版本,一种是发行版本。内核是指提供硬件抽象层、磁盘文件系统、多任务管理等功能的系统软件,但并不完整,只有增加一些外围功能软件才是操作系统。一些组织或厂家将Linux内核与外围实用程序和文档包装起来,并提供系统安装界面和系统配置管理工具,构成发行版本软件包,常见的有RedHat、Ubuntu、Slackware、SUSE等。
Linux的发展过程的一些节点:
    1991年2月,Linus初步编写的Linux功能就是两个进程分别显示AAA和BBB。
    1991年9月,Linus发布的Linux 0.01版本代码量约10000行。
    1993年,参与编写修改Linux内核代码的程序员扩大到100人,核心组5人。
    1994年3月发布的Linux 1.0,代码量达到17万行。
    1995年,Linux已经可以运行在Intel、Sun SPARC等处理器上,用户量超50万。
    1996年,Linux 2.0内核发布,代码量达40万行,全球用户350万。

2. Shell与shell命令:

Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。Shell是一个命令语言解释器,它拥有内建的shell命令集,也能被系统中的其他应用程序调用。用户登录成功后,系统将执行一个名为shell 的程序,shell进程提供了命令行提示符,对普通用户使用$为提示符,对超级用户用#为提示符。
用户在提示符下输入的命令都由shell先解释,然后传给Linux核心,其中一些命令是包含在shell内部的,还有一些命令是存在于文件系统中某个目录下的单独程序。Shell首先检查是否内部命令,若不是再检查是否是一个应用程序。如果键入的命令不是一个内部命令,并且在路径中也没有找到可执行文件,就会显示一条错误信息;如果能够成功找到命令,内部命令或应用程序,将分解为系统调用并传给Linux内核。
如果一条命令花费了很长时间来运行,或者在屏幕上产生了大量输出,可以从键盘上按Ctrt+C发出中断信号来中止执行。
Linux默认的shell是Bourne Again Shell,简称Bash。在登录到系统时,由/etc/passwd文件来决定要使用哪个shell。用户使用的shell是在用户主目录下的.bash_profile文件中定义,Bash每次启动都将读取该文件,设置相关环境变量。

1) Shell命令行及参数:

Shell命令行格式:
  命令 [选项] 参数
选项是包括一个或多个字母的代码,前面要有减号,用于改变命令执行的动作的类型。
在一个命令行可以输入多条命令,使用分号隔开。如果命令行比较长,可以使用反斜杠将一个命令持续到下一行。
⑴ 命令补齐:
输入命令时,如果名字较长而记不清后面字符,可以按Tab键,系统会查找当前目录下的文件名并自动补齐或给出选择。键入Esc?组合键也能列出匹配文件名供选择。
⑵ 命令行编辑:
Shell命令行实际上是一个可以编辑的文本缓冲区,在按Enter键之前,可以对输入的文本进行编辑,可以利用Backspace键删除刚键入的字符,可以进行整行删除,还可以插入字符。

Ctrl+B或左箭头 左移一个字符
Ctrl+F或右箭头 右移一个字符
Ctrl+A 移至行首
Ctrl+E 移至行尾
Esc B 左移一个单词
Esc F 右移一个单词
Del 删除光标所在处字符
Ctrl+D 删除光标所在处字符
Backspace或Ctrl+H 删除光标左边的字符
Ctrl+K 删除至行尾
⑶ 命令历史:
Bash保存着以前键入过的命令列表,history命令能够查看最近执行的命令。利用上箭头可以重新显示刚执行的命令,并可以逐次显示各条命令,下箭头则使命令列表向下移动。
系统保存的历史命令数保存在变量HISTSIZE中,默认值为1000,通过echo $HISTSIZE可以查看设置值,通过HISTSIZE=500可以改变值为500。
而历史命令则保存在文件中,文件名由变量HISTFILE指定,默认为.bash_history,通过给变量HISTFILE赋值,可以指定其他文件名。通过 echo $HISTFILE可以查看文件名,通过HISTFILE="/home/newlist"赋予新值。
⑷ 命令别名:
使用恰当的命令别名可以减少键盘输入,命令格式:
  alias [alias-name='original-command']
其中,alias-name为用户起的别名,original-command是原来的命令和参数。在命令中包含空格等字符时,需要使用引号,而且等号两边也不能有空格,不然shell会解析错误。
为了使别名在每次登录都有效,就需要将alias命令写到初始化脚本文件中。

2) Shell的特殊字符:

Shell中可以使用一些具有特殊含义和功能的特殊字符。
⑴ 通配符:
通配符用于模式匹配,如文件名匹配、路径名搜索、字符串查找等。常用的通配符有*、?和方括号[]中的字符序列。用户可以在作为命令参数的文件名中包含这些通配符,构成模式串,在执行过程中进行模式匹配。
  “*”:代表任意长度的任何字符,但文件或路径名中的圆点和斜线必须显式匹配
  “?”:代表任何单个字符
  “[]”:代表一个指定的字符范围
方括号中的字符范围可以直接由给出的字符组成,也可以由表示限定范围的起始字符、终止字符及中间的连字符“-”组成。连字符仅在方括号内有效,而*和?只在方括号外为通配符。
⑵ 引号:
引号有三种,单引号、双引号和反引号。
由单引号括起来的字符都作为普通字符,特殊字符用单引号括起来后只作普通字符。
由双引号括起来的字符,除$、单引号、双引号外都是普通字符。对$,用其后指定的变量值来代替这个变量和$;反斜线是转义字符,使shell不对其后的字符进行特殊处理,只作为普通字符。
反引号对应键盘左上角,其括起来的字符串被shell解释为命令行,执行时首先执行该命令行,并以其标准输出的结果取代整个反引号部分。利用反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量。如:
  # today=`date`
  # echo Today is $today

反引号还可以嵌套使用,但嵌套时,内层的反引号必须用反斜线将其转义:
  # abc=`echo the number of users is\`who|wc -l\``
  # echo $abc

在反引号之间的命令行也可以使用shell特殊字符。
  # TestString=”`echo $HOME ` `ls h*`”
  # echo $TestString

⑶ 注释符:
以#开头的正文行表示注释行。

3) 标准输入/输出和重定向:

执行shell时,通常会打开3个标准文件,标准输入文件stdin,通常对应终端的键盘;标准输出文件stdout和标准错误输出文件stderr,通常对应终端的屏幕。进程将从标准输入文件得到输入数据,将正常输出的数据输出到标准输出文件,而将错误信息送到标准错误文件。
⑴ 输入重定向:
是指把命令的标准输入重定向到指定的文件,也就是输入可以不来自键盘,而来自一个文件。
输入重定向使用小于号字符,放与命令后面:
  命令<文件名
另一种是使用双小于号,使用一对分隔符,可以使用多行,其间的正文重定向到输入。示例:
  # wc<<qq
  > This is a
  > here document test
  > qq

双小于号后面紧跟的字符串作为分隔符,一直延续到另一个分隔符出现为止,而第二个分隔符必须出现在新行的行首。
⑵ 输出重定向:
是指把命令的标准输出或标准错误重定向到指定文件,这样输出就不在屏幕上显式,而是写入指定的文件中。输出重定向比较常用,使用大于号放于命令后。
  命令>文件名
重定向指向的文件如果已经存在,其内容会被覆盖。也可以使用一种追加式输出重定向,使输出结果追加到指定文件的最后,使用双大于号。
  命令>>文件名
如果要对标准错误输出重定向,使用2>,追加方式则使用2>>。
还有一种是将标准输出和标准错误同时重定向到一个文件中,使用&>。
⑶ 管道:
将一个命令或程序的输出作为另一个命令或程序的输入,可以不借助临时文件而使用管道功能。使用管道可以把一系列命令连接起来,输出最后一个命令的结果。管道使用|符号。
  #ls /usr/bin|wc -w

4) 命令替换:

将一个命令的输出作为另外一个命令的参数,使用反引号。
  命令1 `命令2`

3. Linux常用shell命令:

1) 用户和用户组命令:

useradd [option] username
新建用户账号,超级用户命令
-c fullname 指定用户全称
-d maindir 指定用户主目录
-g groupID 指定用户主要组
-G groupID 指定用户附加组
-s shell 指定用户登录后启动shell类型
-u userID 指定用户id
  # useradd NewUser
当不用任何选项时,Linux系统将按照默认值新建用户,在/home目录新建与用户同名的子目录为该用户主目录,并还将新建一个与用户同名的组作为该用户主要组,该用户shell用Bash,UID由系统决定。
使用useradd新建用户账号,将在/etc/passwd文件和/etc/shadow文件中增加用户的记录,如果新建了组名,将在/etc/group文件和/etc/gshafow文件中增加记录。
passwd [-dkls] [-u <-f>] [username]
设置密码
-d username 删除密码,超级用户命令
-k username 只能在密码过期失效后设置
-l username 锁住密码
-s username 列出密码相关信息,超级用户命令
-u username 解开上锁的账号
-f username 强制执行
  # passwd NewUser
此命令让用户可以更改自己的密码,而超级用户通过指定用户名能用来管理用户密码。
userdel [-r] username
删除指定的用户账号,超级用户命令
-r username 系统不仅删除此用户账号,并且还将用户的主目录一并删除,不用r选项则只删除账号
  # userdel -r User
如果新建用户时创建了同名的组,而该组当时没有其他用户,那么在删除用户的同时也将删除这个组。正在使用系统的用户不能被删除,只有终止该用户所有进程后才能删除。
groupadd [option] groupID
新建组,超级用户命令
-g groupID 指定新建组的ID
  # groupadd NewUsers
利用此命令新建组时,如果不指定groupID,由系统指定。执行时将在/etc/group文件和/etc/gshadow文件中增加一行记录。
groupdel groupID
删除指定的组,超级用户命令
  # groupdel NewUsers
删除指定组之前,必须保证该组群不是任何用户的主要组,否则需要首先删除那些以此组为主要组的用户,才能删除该组。
其他还有:
  ·  uname:当前系统相关信息
  ·  hostname:用以显示或设置系统的主机名称
  ·  date:显示或设置系统时间与日期
  ·  cal:显示日历
  ·  uptime:打印系统总计运行了多长时间和系统的平均负载
  ·  dmesg:显示开机信息
  ·  top:显示当前系统状态信息
  ·  who:显示登录到系统的所有用户
  ·  whoami:显示当前用户
  ·  last:显示近期登录用户的信息
  ·  usermod:修改用户账号基本信息
  ·  id:显示用户ID、组ID和所属组列表
  ·  ifconfig:显示或设置网络设备
  ·  ping:测试主机之间网络的连通性
  ·  netstat:用于显示状态信息

2) 文件和目录命令:

mkdir [option] dir
创建目录
-m 访问权限 设置目录的权限
-p 目录树 一次创建多级目录
  $ mkdir -p directory/list
mv [option] source object
移动或重命名文件或目录
-b 若存在同名文件,则覆盖之前先备份原来的文件
-f 强制覆盖同名文件
  $ mv neu neusoft
  $ mv neu ../

cp [option] source object
复制文件或目录
-b 若存在同名文件,则覆盖之前先备份原来的文件
-f 强制覆盖同名文件
-r 按递归方式,保留原目录结构复制
  $ cp -b neu neusoft
rm [option] file/dir
删除文件或目录
-f 强制删除,不出现确认信息
-r 按递归方式删除目录
  $ rm -rf directory
chmod [mod] file
修改文件访问权限
mod 包括数字形式的模式0~7和功能描述权限的选项
文件权限的数字表示:
0 1 2 3 4 5 6 7
--- --x -w- -wx r-- r-x rw- rwx
可执行 可写 可写可执行 可读 可读可执行 可读可写 可读可写可执行
功能模式由下面三部分组成:
对象 操作符 权限
u g o + - = r w x
文件所有者 同组用户 其他用户 增加权限 删除权限 赋予给定权限 读取权限 写入权限 执行权限
  $ chmod g-w test
chgrp group file
修改文件所属组
  $ chgrp NewUsers test
chown owner[.gID] file
改变文件所有者,也可以一并修改所属组
  $ chown NewUser test
其他还有:
  ·  ls:显示当前路径下的内容
  ·  rmdir:删除目录
  ·  touch:创建文件或更新文件修改时间
  ·  mv:重命名或移动文件
  ·  wc:显示行数、单词数和字节数
  ·  find:查找文件
  ·  file:显示文件类别
  ·  du:显示文件占用磁盘信息
  ·  grep:查找字符串

3) 进程命令:

ps [option]
显示进程的状态,无选项时显示当前终端启动的进程
-a 显示当前终端上所有进程,包括其他用户的进程
-e 显示系统中所有进程,包括其他用户进程和系统进程
-l 显示进程的详细信息,包括父进程号、优先级等
u显示进程的信息信息,包括CPU和内存使用率
X 显示后台进程
-t terminal 显示指定终端上的进程信息
  $ ps u
kill [option] pid
kill % proc
终止正在进行的进程或作业,超级用户可终止所有进程,普通用户只能终止自己启动的进程
-9 当无选项的kill命令不能终止进程时,可强行终止指定进程
  $ kill 2682

4) 压缩打包命令:

  ·  tar:打包备份文件
  ·  bzip2:bz2文件格式压缩或解压
  ·  bunzip2:bz2文件格式解压
  ·  bzip2recover:修复损坏的bz2文件格式
  ·  gzip:gz文件格式压缩
  ·  gunzip:gz文件格式解压
  ·  unzip:zip文件格式解压
  ·  compress:早期的压缩解压

5) 其他一些命令:

  ·  clear:清屏
  ·  cat:显示文本文件内容
  ·  mount:挂载

6) 获取帮助信息:

Linux系统在安装过程中可以选择安装联机帮助手册,可以使用man命令来显示联机帮助手册的条目。手册共有8个常见章节:
章节号 内容
1 用户命令(env、ls、echo、mkdir、tty)
2 系统调用或内核函数(link、sethostname、mkdir)
3 库函数(acosh、asctime、btree、locale)
4 与设备相关的信息(isdn_audio、mouse、tty、zero)
5 文件格式描述(keymaps、motd、wvdial.conf)
6 游戏(许多游戏是图形化的)
7 杂项(arp、boot、regex、unix utf8)
8 系统管理(debugfs、fdisk、fsck、mount、renice、rpm)
man命令的使用方法:
Man [-adfhktw W][-section][-M path][-P pager][-S list][-m system][-p string]title......
-a 显示所有匹配项
-d 显示man查找手册文件时的搜索路径信息,不显示手册页面内容
-f 同命令whatis,将在whatis数据库查找以关键字开始的帮助索引信息
-h 显示帮助信息
-k 同命令apropos,将搜索whatis数据库,模糊查找关键字
-t 使用troff命令格式化输出手册页面,默认groff输出格式页面
-w|-W 如果不带title参数,则打印MANPATH变量;如果带title参数,则打印找到的title所在的手册文件路径,默认搜索一个文件后停止
-section 指定某个段内搜索相关条目,如果省略,则搜索所有的手册段。section取值可以为1~8,来指明要查看的帮助信息。
-M path 指定搜索手册的路径
-P pager 使用程序pager显示手册页面,默认是/usr/bin/less
-S list 指定搜索的领域及顺序,如man 3:1 prinft,将先搜索man的第3章节,如果没搜到,再搜索man的第1章节
-m system 依所指定的system名称而指定另一组的联机帮助手册
-p string 指定通过groff格式化手册之前,先通过其他程序格式化手册
  $ man -w passwd
  $ man -aw passwd
  $ man 1 passwd

4. Linux主要的系统调用:

1) 进程控制:

*fork 创建一个新进程 prctl 对进程进行特定操作
clone 按指定条件创建子进程 ptrace 进程跟踪
*execve 运行可执行文件 sched_get_priority_max 取得静态优先级的上限
*exit 中止进程 sched_get_priority_min 取得静态优先级的下限
*_exit 立即中止当前进程 sched_getparam 取得进程的调度参数
getdtablesize 进程所能打开的最大文件数 sched_getscheduler 取得指定进程的调度策略
getpgid 获取指定进程组标识号 sched_rr_get_interval 取得按RR算法调度的实时进程的时间片长度
setpgid 设置指定进程组标志号 sched_setparam 设置进程的调度参数
getpgrd 获取当前进程组标识号 sched_setscheduler 设置指定进程的调度策略和参数
setpgrd 设置当前进程组标志号 sched_yield 进程主动让出处理器,并将等候调度队列队尾
*getpid 获取进程标识号 *vfork 创建一个子进程,以供执行新程序,常与execve等同时使用
*getppid 获取父进程标识号 *wait 等待子进程终止
getpriority 获取调度优先级 wait3 参见wait
setpriority 设置调度优先级 *waitpid 等待指定子进程终止
modify_ldt 读写进程的本地描述表 wait4 参见waitpid
nanosleep 使进程睡眠指定的时间 capget 获取进程权限
nice 改变分时进程的优先级 capset 设置进程权限
*pause 挂起进程,等待信号 getsid 获取会话标识号
personality 设置进程运行域 setsid 设置会话标识号

2) 文件操作:

fcntl 文件控制 *lseek 移动文件指针
*open 打开文件 _llseek 在64位地址空间里移动文件指针
*creat 创建新文件 *dup 复制已打开的文件描述符
*close 关闭文件描述符 *dup2 按指定条件复制文件描述符
*read 读文件 flock 文件加/解锁
*write 写文件 poll I/O多路转换
readv 从文件读入数据到缓冲数组中 *truncate 截短文件
writev 将缓冲数组里的数据写入文件 *ftruncate 参见truncate
pread 对文件随机读 *umask 设置文件权限掩码
pwrite 对文件随机写 *fsync 把文件在内存中的部分写回硬盘

3) 文件系统操作:

access 确定文件的可存取性 getdents 读取目录项
*chdir 改变当前工作目录 *mkdir 创建目录
*fchdir 参见cddir mknod 创建索引节点
*chmod 改变文件方式 *rmdir 删除目录
*fchmon 参见chmod *rename 文件改名
*chown 改变文件的所有者或所属组 *link 创建链接
*fchown 参见chown *symlink 创建符号链接
*lchown 参见chown *unlink 删除链接
chroot 改变根目录 *readlink 读符号链接的值
*stat 取文件状态信息 mount 安装文件系统
*lstat 参见stat umount 卸载文件系统
*fstat 参见stat ustat 取文件系统信息
statfs 取文件系统信息 *utime 改变文件的访问修改时间
fstatfs 参见statfs utimes 参见utime
*readdir 读取目录项 quotactl 控制磁盘配额

4) 系统控制:

ioctl I/O总控制 *alarm 设置进程的闹钟
_sysctl 读写系统参数 getitimer 获取计时器值
acct 启用或禁止进程记账 setitimer 设置计时器值
getrlimit 获取系统资源上限 gettimeofday 取时间和时区
settrlimit 设置系统资源上限 settimeofday 设置时间和时区
gettrusage 获取系统资源使用情况 *stime 设置系统日期和时间
uselib 选择要使用的二进制函数库 *time 取得系统时间
ioperm 设置端口I/O权限 times 取得进程运行时间
iopl 改变进程I/O权限级别 uname 获取当前UNIX系统的名称、版本和主机等信息
outb 低级端口操作 vhangup 挂起当前终端
reboot 重新启动 nfsservctl 对NFS守护进程进行控制
swapon 打开交换文件和设备 vm86 进入模拟8086模式
swapoff 关闭交换文件和设备 create_module 创建可装载的模块项
bdflush 控制bdflush守护进程 delete_module 删除可装载的模块项
sysfs 取核心支持的文件系统类型 init_module 初始化模块
sysinfo 取得系统信息 query_module 查询模块信息
adjtimex 调整系统时钟 *get_kernel_syms 取得核心符号,已被query_module替代

5) 内存管理:

brk 改变数据段空间的分配 munmap 去除内存页映射
sbrk 参见brk mremap 重新映射虚拟内存地址
mlock 内存页面加锁 msync 将映射内存中的数据写回磁盘
munlock 内存页面解锁 mprotect 设置内存映像保护
mlockall 调用进程所有内存页面加锁 getpagesize 获取页面大小
munlockall 调用进程所有内存页面解锁 *sync 将内存缓冲区数据写回硬盘
mmap 映射虚拟内存页 cacheflush 将指定缓冲区中的内容写回磁盘

6) 网络管理:

getdomainname 取域名 sethostid 设置主机标识号
setdomainname 设置域名 *gethostname 获取本主机名称
gethostid 获取主机标识号 sethostname 设置主机名称

7) socket控制:

socketcall socket系统调用 *recvmsg 参见recv
*socket 建立socket *listen 监听socket端口
*bind 绑定socket到端口 select 对多路同步I/O进行轮询
*connect 连接远程主机 *shutdown 关闭socket上的连接
*accept 响应socket连接请求 getsockname 取得本地socket名字
*send 通过socket发送信息 gerpeername 获取通信对方的socket名字
*sendto 发送UDP信息 getsockopt 取端口设置
*sendmsg 参见send setsockopt 设置端口参数
*recv 通过socket接收信息 sendfile 在文件或端口间传输数据
*recvfrom 接收UDP信息 socketpair 创建一对已连接的无名socket

8) 用户管理:

*getuid 获取用户标识号 setreuid 分别设置真实和有效的用户标识号
setuid 设置用户标识号 getresgid 分别获取真实的、有效的和保存过的组标识号
*getgid 获取组标识号 setresgid 分别设置真实的、有效的和保存过的组标识号
setgid 设置组标识号 getresuid 分别获取真实的、有效的和保存过的用户标识号
*getegid 获取有效组标识号 setresuid 分别设置真实的、有效的和保存过的用户标识号
setegid 设置有效组标识号 setfsgid 设置文件系统检查时使用的组标识号
*geteuid 获取有效用户标识号 setfsuid 设置文件系统检查时使用的用户标识号
seteuid 设置有效用户标识号 getgroups 获取后补组标识清单
setregid 分别设置真实和有效的组标识号 setgroups 设置后补组标识清单

9) 进程间通信:

ipc 进程间通信总控制调用 ssetmask ANSI C的信号处理函数,作用类似sigaction
*sigaction 设置对指定信号的处理方法 msgctl 消息控制操作
sigprocmask 根据参数对信号集中的信号执行阻塞/解除阻塞等操作 msgget 获取消息队列
sigpending 为指定的被阻塞信号设置队列 msgsnd 发消息
sigsuspend 挂起进程等待特定信号 msgrcv 取消息
*signal 设置对指定信号的处理方法 pipe 创建管理
*kill 向进程或进程组发信号 semctl 信号量控制
sigblock 向被阻塞信号掩码中添加信号,已被sigprocmask替代 semget 获取一组信号量
siggetmask 取得现有阻塞信号掩码,已被sigprocmask替代 semop 信号量操作
sigsetmask 用给定信号掩码替换现有阻塞信号掩码,已被sigprocmask替代 shmctl 控制共享内存
sigmask 将给定的信号转化为掩码,已被sigprocmask替代 shmget 获取共享内存
sigpause 作用同sigsuspend,已被sigsuspend替代 shmat 连接共享内存
sigvec 为兼容BSD而设的信号处理函数,作用类似sigaction shmdt 拆卸共享内存
Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659