摘要:
目录 一、信号阻塞与信号未决 二、pause(2)的使用 三、信号传送过程处理 四、可重入函数 五、编写代码实现信号处理函数的继承 六、setitimer实现定时器 一、信号阻塞与信号未决 进程可以对某个信号设置阻塞或屏蔽,可是使用sigset_t(信号集)这个数据类型进行操作,对sigset_t操 阅读全文
摘要:
目录 一、使用C程序访问环境变量 二、文件输入重定向 三、管道 四、信号 四、信号 信号就是软件模拟的中断,信号是进程的异步通讯机制。 如何查看系统提供的信号:kill -l,下面的数字为信号的编号,编号后面的字符为信号的名称。 man 7 signal,可查看信号帮助 通过shell向进程发送信号 阅读全文
摘要:
目录 一、使用C程序访问环境变量 二、文件输入重定向 三、管道 四、信号 三、管道 管道分为:无名管道和有名管道。 1、无名管道 使用pipe(2)可创建无名管道 #include<unistd.h> int pipe(int pipefd[2]); 功能: 创建可用于进程间通信的单向管道 参数: 阅读全文
摘要:
目录 一、使用C程序访问环境变量 二、文件输入重定向 三、管道 四、信号 一、使用C程序访问环境变量 系统提供一个全局变量,extern char **environ; 内部存放结构如下 1、使用全局变量environ打印系统所有环境变量: 2、使用main(int argc,char *argv, 阅读全文
摘要:
5、在进程虚拟地址空间中加载新映像 在子进程的虚拟地址空间里加载新的映像,需要使用系统提供的一系列函数: 他们的作用都是执行一个文件,当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执 阅读全文
摘要:
知识点比较杂,需要注意逻辑联系 1、程序与进程的区别 程序是静态的,存放在磁盘上,是指令的集合。 进程是程序运行的实例,一个程序运行产生一次产生一个进程。 关于进程,每个进程都有自己的pid,都有自己的PCB,PCB(进程控制块)记录了进程使用到的资源。 进程是资源分配的基本的单位,但是不是执行的基 阅读全文
摘要:
1、fopen(3) 分配结构体FILE的一块内存,在FILE类型中有一个成员变量_fileno,用于保存文件描述符。另外分配一块缓存,后边库函数对文件的读写操作是针对这块缓存的;调用open(2)打开相应文件。 2、fgetc(3) 调用fgetc的时候,主要是针对缓存,从缓存中获取数据,如果缓存 阅读全文
摘要:
Linux 库函数与系统调用的关系与区别 上周总结了《C 标准库的基础 IO》,其实这些功能函数通过「系统调用」也能实现相应功能。这次文章并不是要详细介绍各系统调用接口的使用方法,而是要深入理解「库函数」与「系统」调用之间的关系和区别。 一、系统调用 系统调用,我们可以理解是操作系统为用户提供的一系 阅读全文
摘要:
浅谈Linux下的五种I/O模型 一、关于I/O模型的引出 我们都知道,为了OS的安全性等的考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer。如下图所示: 整个请求过程为: 用户进程发起请求,内核接受到请求后,从I/O 阅读全文
摘要:
文件锁详解:https://www.ibm.com/developerworks/cn/linux/l-cn-filelock/ 文件锁操作函数: fcntl(2) #include<unistd.h> #include<fcntl.h> int fcntl(int fd,int cmd,.../* 阅读全文