关于lxc中看到的一些东西,ptmx,blockdev,sigprocmask

来源:互联网 发布:阿里云加固 编辑:程序博客网 时间:2024/05/26 16:00

so,标题已经吊炸天了,这个是看lxc源码中出现的一堆东西。
没办法,学的差,什么不懂,不懂没问题,会google就ok么,所以整理了这篇杂篇。
ok,一个一个来总结
ptmx:
讲ptmx,不得不说tty,pty,等,很多人应该都用过终端的命令模式,那个就是pty
那么ptmx的作用就出来了,pts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。
那么在dev下面会是神马情况,我们来看一下,
在dev下面有/dev/ptmx,和/dev/pts/ptmx,/dev/pts/n一系列文件。
这里写图片描述
那么这个是怎么工作的,首先系统启动会先打开/dev/ptmx,然后系统调用fork 出/dev/pts/n对应的终端,这样就可以使用我们常用的终端了。

blockdev:
谈blockdev不得先说ioctl,对linux了解的应该对ioctl这个系统调用比较熟悉。
即设备驱动程序中对设备的I/O通道进行管理的函数,那么blockdev是干什么呢。
说白了这个就是命令行下的ioctl。参数较多,只列一点了
–setro 设置设备为只读
–getro 读取设备是否为只读(成功为1,0则为可读写)
–setrw 设置设别为可读写
–getss 打印设备的扇区大小,通常是512
–getsize 打印设别的容量,按照一个扇区512个字节计算
–setra N Set readahead to N 512-byte sectors.
–getra 打印readahead
–flushbufs 刷新缓冲
–rereadpt 重读分区表
示例:blockdev –getro /dev/sda

sigprocmask:
这个只能转载了,对这个是在不懂。
1、有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。这种情况是通过阻塞信号实现的。

2、信号阻塞和忽略信号的区别。
阻塞的概念和忽略信号是不同的。操作系统在信号被进程解除阻塞之前不会讲信号传递出去,被阻塞的信号也不会影响进程的行为,信号只是暂时被阻止传递。当进程忽略一个信号时,信号会被传递出去但进程会将信号丢弃。

3、信号阻塞系统调用,它们的都起到阻塞的作用,它们不是协作使用的。

#include <signal.h>int sigprocmask(ubt how,const sigset_t*set,sigset_t *oldset);int sigsuspend(const sigset_t*sigmask);

sigprocmask设定对信号屏蔽集内的信号的处理方式(阻塞或不阻塞)。

参数:
how:用于指定信号修改的方式,可能选择有三种
SIG_BLOCK//将set所指向的信号集中包含的信号加到当前的信号掩码中。即信号掩码和set信号集进行或操作。
SIG_UNBLOCK//将set所指向的信号集中包含的信号从当前的信号掩码中删除。即信号掩码和set进行与操作。
SIG_SETMASK //将set的值设定为新的进程信号掩码。即set对信号掩码进行了赋值操作。

set:为指向信号集的指针,在此专指新设的信号集,如果仅想读取现在的屏蔽值,可将其置为NULL。
oldset:也是指向信号集的指针,在此存放原来的信号集。可用来检测信号掩码中存在什么信号。
返回说明:
成功执行时,返回0。失败返回-1,errno被设为EINVAL。
例子

#include <stdio.h>#include <signal.h>int main(){        sigset_t set;             //定义阻塞信号集的变量        sigemptyset(&set);        //清空变量set的阻塞信号        sigaddset(&set,SIGINT);   //添加将要阻塞的信号"SIGINT"到阻塞信号集变量        sigdelset(&set,SIGINT);   //从已有的阻塞信号集变量中删除阻塞信号"SIGINT"        sigaddset(&set,SIGQUIT);  //添加将要阻塞的信号"SIGQUIT"到阻塞信号集变量        sigprocmask(SIG_SETMASK,&set,NULL);// 将当前的阻塞信号集合变量set设置为该进程信号阻塞列表        while(1);                 //        return 0;}
0 0
原创粉丝点击