
Linux系统编程
无语的dandan
热爱IT行业 热爱分享知识 希望认识更多同道中人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
文件空洞的作用
在共享内存时候有用到,共享内存的机制是两个进程都调用mmap函数,然后将同一个文件fd映射到各自虚拟内存中,虽然这两个进程有各自的映射内存,但是这两个虚拟内存对应的是同一块物理内存,这才实现了共享内存。当两个文件需要共享内存的时候,由于不知道需要共享内存的大小,所以需要在文件创建后之后设置文件的大小,这时就需要用到空洞文件了。一开始文件的大小为0,如果要设置文件的大小为filesize,...原创 2019-05-11 16:55:26 · 1019 阅读 · 0 评论 -
MMAP文件映射
MMAP文件映射:mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。 注:实际上,mmap()系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或System ...原创 2019-05-11 16:57:53 · 634 阅读 · 0 评论 -
IO多路转接模型select()函数
简单版通信——一端轮流说一句实现读写同步:1.管道是半双工的,要想实现双向通信,需要设置两条管道2.当写端没写或是管道内缓冲区数据为空,那么读端读数据会发生阻塞;当写端断开,读端读取管道会返回零,会一直while(1)循环,需要ctrl+c结束写端是指给管道内写入数据读端是指从管道内读取数据3.管道的缓冲是4k大小,标准输入大于4k,将会发生踩踏对于1号管道,由...原创 2019-05-11 17:02:29 · 306 阅读 · 0 评论 -
Linux进程基础
Linux进程概述进程控制块:PCB,进程控制块包含了进程的描述信息、控制信息以及资源信息,它是进程的一个静态描述。内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程序,运行多久以及采用什么特性运行它,内核的调度器负责在所有的进程间分配CPU执行时间,称为时间片,它轮流在每个进程分得的时间片用完后从进程那里抢回控制权。进程标识OS会为每个进程分...原创 2019-05-12 21:12:37 · 243 阅读 · 0 评论 -
Linux进程进阶
缓冲区必须刷新才可以写到磁盘上int fsync(int fd);//等价于fflush(),刷新同步标准输出一定要加"\n"进行刷新fflush(stdout);一、进程的创建1.system函数<1>一个进程正常启动时间是几百毫秒,而用system("sleep"),要拉起sleep进程,慢<2> system通过./a.out执行后,拉起来了s...原创 2019-05-12 21:21:31 · 231 阅读 · 0 评论 -
Linux文件IO open、dup、fork内核原理分析
1.open一个文件一个Linux进程启动后,会在内核空间创建一个PCB进程控制块,PCB是一个进程的私有财产。这个PCB中有一个已打开文件描述符表,记录着所有该进程打开的文件描述符以及对应的file结构体地址。默认情况下,启动一个Linux进程后,会打开三个文件,分别是标准输入、标准输出、标准错误分别使用了0、1 、2号文件描述符。当该进程使用函数open打开一个新的文件时,一般...原创 2019-05-12 21:27:53 · 991 阅读 · 1 评论