自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Linux进程间通信-System V IPC

System V 引入了三种高级进程间的通信机制:消息队列、共享内存和信号量。IPC对象(消息队列、共享内存和信号量)存在内核中而不是文件系统中,由用户控制释放。共享内存共享内存是System V 进程间通信中速度最快的,共享内存不提供同步和互斥机制,所以这部分必须由用户来完成。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,也就是说进程不再通过执行进入内核的...

2019-08-30 17:28:50 150

原创 Linux进程间通信-管道

进程间通信的目的数据传输:一个进程需要将它的数据发送给另一个进程。 资源共享:多个进程之间共享同样的资源。 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某个事件(如进程终止时要通知父进程)。 进程控制:有些进程希望完全控制另一个进程(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。进程是具有独立性,所以...

2019-08-29 12:15:26 123

原创 Linux基础IO-文件描述符&重定向&文件系统的理解&动静态库

C文件接口首先我们需要理解C文件接口中的几个函数fwrite函数、fread函数对文件格式化读写函数fprintf与fscanf而言,尽管它可以从磁盘文件中读写任何类型的文件,即读写的文件类型可以是文本文件、二进制文件,也可以是其他形式的文件。但是,对二进制文件的读写来说,考虑到文件的读写效率等原因,还是建议尽量使用fread和fwrite函数进行读写操作。头文件:#incl...

2019-08-26 17:33:32 349

原创 Linux进程程序替换

进程程序替换为什么要有进程替换我们之前学到过,fork创建子进程,目的是让子进程执行和父进程相同的程序,并且父进程只能获得子进程某些方面的特殊信息。而我们期望的是子进程和父进程执行不同的程序,做不同的事情,所以就有了进程替换 。替换原理fork创建子进程后,子进程要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新进程替换,从新程...

2019-08-22 17:57:18 400

原创 深度理解fork()函数及进程控制

进程创建理解fork()函数再谈fork()函数,从前面我们知道fork函数是从已经存在的进程中创建一个新进程,新进程为子进程,而原进程为父进程。它的返回值有两个:子进程返回0,父进程返回子进程id,出错返回-1进程调用fork,当控制转移到内核中的fork代码后,内核做的事情:分配新的内存块和内核数据结构给子进程 将父进程部分数据结构内容拷贝给子进程 添加子进程到系统进程列...

2019-08-21 17:21:52 718

原创 Linux进程概念

冯诺依曼体系结构我们常见的计算机,如笔记本,和不常见的计算机,如服务器,大部分都遵循冯诺依曼体系结构。我们所认识的计算机都是由一个个的硬件组成的。这些硬件包括:输入单元:包括鼠标、键盘、扫描仪、写板等 中央处理器(CPU):含有运算器和控制器 输出单元:显示器,打印机等值得注意的是:这里的存储器指的是内存,不考虑缓存的情况下,这里的CPU只能对内存进行读写,不能访问外设(输入...

2019-08-19 14:57:03 153

原创 程序地址空间

程序地址空间可能大家第一眼看到会觉得是表示的是内存,其实它并不是内存,不能保存数据,实际上它是一块虚拟地址,用结构体描述。我们研究的背景是在kernel2.6.32,32位平台上。先写一段代码验证程序虚拟地址运行结果:从输出结果可以看出:父子进程输出的变量值和地址是一样的,很好理解,因为子进程继承了父进程,父子并没有对变量进行任何修改。但是,如果我们将代码稍微改动一下:...

2019-08-19 11:37:13 268

原创 Linux操作系统中的环境变量

环境变量基本概念环境变量(environment varibles)一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量是由系统定义的。如:在编写C/C++代码的时候,在链接的时候,我们也许一直都不知道我们所链接的动静态库在哪里,但是照样可以链接成功,生成可执行程序,原因在于有相关环境变量帮助编译器进行查找。 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。常...

2019-08-15 16:53:48 1245

原创 Linux项目自动化构建工具make/Makefile

背景知识会写makefile,从侧面说明了这个人具备了一定完成大型工程的能力,这足以说明makefile的重要性。 一个工程中的源文件不计其数,按类型、功能、模块分别放在若干目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。 makefile带来的好处就是“自动化编译”,一旦写好了makefile,只...

2019-08-12 12:39:11 252

原创 yum和编辑器Vim

Linux软件包管理器yum什么是软件包在Linux下安装软件一般都是有人把一些常见的软件提前编译好,做成软件包(可以理解成Windows上的安装程序)放在服务器上,通过包管理器可以很方便的获取这个编译好的软件包,直接进行安装。软件包和软件包管理器,和“app”与“应用商店”类似。yum(Yellow dog Updater,Modified)是Liunx下非常常用的一种包管理器,主要应用...

2019-08-10 16:20:45 225

原创 IO多路转接--select

select系统提供select函数来实现多路复用输入/输出模型。数据在通信过程中,分为两部分: 1.等待数据到达内核。 2.将数据从内核拷贝到用户区。然而在实际的应用中,等待的时间往往比拷贝的时间多得多,所以我们要想提高效率,就必然要将等待时间减少(减少等的比重)。这时,IO多路转接就是解决这个问题的:一次监视多个文件描述符的状态变化。在多路转接...

2019-08-10 09:42:46 203

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除