随笔分类 -  Linux系统编程

摘要:一、C标准I/O库函数、Unbuffered I/O函数 1. C标准I/O库函数是如何用系统调用的 fopen(3) 调用open(2)打开制定的文件,返回一个文件描述符(一个int类型的编号),分配一个FILE结构体,其中包含该文件的描述符、I/O缓冲区和当前读写位置等信息,返回这个FILE结构 阅读全文
posted @ 2016-08-16 18:39 orlion 阅读(1349) 评论(0) 推荐(0) 编辑
摘要:一、socket地址的数据类型及相关函数 socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6、UNIX Domain Socket。然而各种网络协议的地址格式并不相同,如下图所示: IPv4和IPv6的地址格式定义在netinet/in.h中,IPv4地址用s 阅读全文
posted @ 2016-04-14 13:30 orlion 阅读(553) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1250/ 一、线程 同一进程的多个线程共享同一地址空间,因此Text Segment、Data Segment都是共享的,如果定义一个函数,在个线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到,除此之外,个线程还共享一下进程资源和环 阅读全文
posted @ 2016-04-03 21:35 orlion 阅读(2208) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1227/ 一、概念 unix系统中用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制端。控制终端是保存在PCB中的信息,而fork会复制PCB中的信息,因此Shell进程启动的其他进程的控制终端也是这个终端。默认情况下 阅读全文
posted @ 2016-04-03 21:34 orlion 阅读(434) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1126/ 一、阻塞信号 1、信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保存在未决状态,直到进 阅读全文
posted @ 2016-04-03 21:33 orlion 阅读(1336) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1072/ 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区中把数据读走,内核提供的这种机制称为进程 阅读全文
posted @ 2016-04-03 21:32 orlion 阅读(282) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1122/ 一、信号的概念 一个熟悉的场景: 用户输入命令,在Shell下启动一个前台进程 用户按下Ctrl-C,键盘输入产生一个硬件中断 如果CPU正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从 用户态切换到内核态处理硬件中断 阅读全文
posted @ 2016-04-03 21:32 orlion 阅读(248) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1044/ 一、fork函数 #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork调用失败返回-1。下面通过一个例子来理解fork是怎样创建进程的。 输出 fork-ww 阅读全文
posted @ 2016-04-03 21:31 orlion 阅读(382) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.orlion.ga/1015/ 一、进程 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,linux内核的进程控制块是task_struct结构体,其中有: 进程id。系统中每个进程有一个唯一的id,在C语言中用pid_t类型表示,是一个非负正是 进 阅读全文
posted @ 2016-04-03 21:30 orlion 阅读(438) 评论(0) 推荐(0) 编辑