关于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;}
- 关于lxc中看到的一些东西,ptmx,blockdev,sigprocmask
- 从FreeBSD源码中看到的东西
- 关于tomcat服务器新学到的一些东西
- JS学习中看到的一些好的写法
- 代码中看到后收集的一些shader学习笔记
- 关于player的一些东西
- 关于Rss的一些东西
- 关于招聘的一些东西
- 关于log4j的一些东西
- 关于memset的一些东西
- 关于电子邮件的一些东西
- 关于sscanf的一些东西
- 一些关于hibernate的东西
- 关于emacs的一些东西
- 关于javaScript的一些东西
- 关于wlan的一些东西
- 关于bsp的一些东西
- 关于补码的一些东西
- Ceres-Solver库下载网址
- sourcetree使用
- 分布式系统的特点以及设计理念
- 轻松python文本专题-字符串对齐
- Android 存储:SD卡剩余空间的检测
- 关于lxc中看到的一些东西,ptmx,blockdev,sigprocmask
- 【UML】各种图之间的关系
- Android Universal Image Loader 学习笔记(一)
- 多线程编程
- Python源码分析1 - Building Python http://blog.csdn.net/atfield/article/details/1396729
- leetcode 199: Binary Tree Right Side View
- 在Ubuntu 14.04 64bit上使用网络诊断工具mtr
- 线程上下文类加载器总结
- @property 和synthesize 的使用窍门