![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux C语言开发
文章平均质量分 58
Linux C语言开发
温玉琳琅
多读书,多运动,少吃零食,多睡觉
展开
-
Linux-IPC之共享内存
System V(标准)共享内存机制: shmget shmat shmdt shmctl原理及实现:system V IPC机制下的共享内存本质是一段特殊的内存区域,进程间需要共享的数据被放在该共享内存区域中,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间(虚拟地址空间)中去。这样一个使用共享内存的进程可以将信息写入该空间,而另一个使用共享内存的进程又可以通过简单的原创 2016-01-26 23:59:42 · 933 阅读 · 0 评论 -
Linux-IPC之信号量
信号量(也叫信号灯)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语(不会被其他指令中断)。信号量是进程/线程同步的一种方式,有时候我们需要保护一段代码,使它每次只能被一个执行进程/线程运行,这种工作就需要一个二进制开关;有时候需要限制一段代码可以被多少个进程/线程执行,这就需要用到关于计数信号量。信号量开关是二进制信号量的一种逻辑扩展,两者实际调用的函数都是一样。信号量分原创 2016-01-28 00:24:40 · 543 阅读 · 0 评论 -
Linux-IPC之管道
一、标准流管道像文件操作有标准io流一样,管道也支持文件流模式。用来创建连接到另一进程的管道,是通过函数popen和pclose。原型:#include FILE* popen(const char* command, const char* open_mode);int pclose(FILE* fp);函数popen():允许一个程序将另一个程序作为新进程来启动,并可以原创 2016-01-26 21:08:18 · 433 阅读 · 0 评论 -
Linux-IPC之信号
一、信号概念信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件)。信号是硬件中断的软件模拟(软中断)。每个信号用一个整型常量宏表示,以SIG开头,比如SIGCHLD、SIGINT等,它们在系统头文件中定义,也可以通过在shell下键入kill –l查看信号列表,或者键入man 7 signal查看更详细的说明。信号的生成来自内核,让内核生成信号的请求来自3个地方:1.用户原创 2016-01-28 23:39:14 · 521 阅读 · 0 评论 -
第一章 线程概述
一、线程概述进程是系统中程序执行和资源分配的基本单位。每个进程有自己的数据段、代码段和堆栈段。这就造成进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少处理器的空转时间支持多处理器和减少上下文切换开销,也就出现了线程。线程通常叫做轻量级进程。线程是在共享内存空间中并发执行的多道执行路径,是一个更加接近于执行体的概念,拥有独立的执行序列,是进程的基本调度单元,每个进程至原创 2016-02-01 22:12:52 · 468 阅读 · 0 评论 -
进程#第二章 进程
一、进程标识OS会为每个进程分配一个唯一的整型ID,做为进程的标识号(pid)。进程除了自身的ID外,还有父进程ID(ppid),所有进程的祖先进程是同一个进程,它叫做init进程,ID为1,init进程是内核自举后的一个启动的进程。init进程负责引导系统、启动守护(后台)进程并且运行必要的程序。虽然进程ID是唯一的,但是进程ID是可复用的。当一个进程终止后,其进程ID就成为复用的候原创 2016-01-25 17:42:59 · 604 阅读 · 0 评论 -
进程#第三章 进程的创建
Linux下有四类创建子进程的函数:system(),fork(),exec*(),popen() 先执行父进程,后执行子进程一、system()原型:#include <stdlib.h>int system(const char *string);system函数通过调用shell程序/bin/sh -c 来执行string所指定的命令,该函数在内部是通过调用fork()–>execve(“原创 2016-01-26 00:18:41 · 670 阅读 · 0 评论 -
进程#第五章 守护进程
Daemon运行在后台也称作“后台服务进程”。 它是没有控制终端与之相连的进程。它独立与控制终端、会话周期的执行某种任务。那么为什么守护进程要脱离终端后台运行呢?守护进程脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的任何终端信息所打断。那么为什么要引入守护进程呢?由于在linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依原创 2016-01-26 19:50:42 · 425 阅读 · 0 评论 -
进程#第一章 进程概述
进程是一个程序一次执行的过程,它和程序有本质区别。程序是静态的,它是一些保存在磁盘上的指令的有序集合;而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建、调度和消亡的过程,是Linux的基本调度单位。那么从系统的角度看如何描述并表示它的变化呢?在这里,是通过进程控制块(PCB)来描述的。进程控制块包含了进程的描述信息、控制信息以及资源信息,它是进程的一个静态描述。内核使用进原创 2016-01-25 15:31:26 · 676 阅读 · 0 评论 -
进程#第四章 进程的控制与终止
一、进程的控制如果父进程先于子进程退出,则子进程成为孤儿进程,此时将自动被PID为1的进程(即init)接管。孤儿进程退出后,它的清理工作有祖先进程init自动处理。但在init进程清理子进程之前,它一直消耗系统的资源,所以要尽量避免。孤儿进程示例:#include #include #include int main(){ if(!fork()) { pr原创 2016-01-26 14:11:33 · 2430 阅读 · 0 评论 -
文件#第一章 文件概述
文件系统:Linux文件系统是目录和文件的一种层次结构,所有东西的起点是称为根(root)的目录,这个目录的名称是一个字符“/”。目录:目录是一个包含目录项的文件。在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件名:目录中的各个名字称为文件名。只有斜线“/”和空字符这两个字符不能出现在文件名中。斜线用来分隔构成路径名的各文件名,空格符则用来终止一个路径名。原创 2016-01-24 23:44:27 · 459 阅读 · 0 评论 -
文件#第二章 文件的创建、打开与关闭
一、基于文件指针的操作(缓冲)1、文件的创建原型为:#include //头文件包含FILE *fopen(const char *pach,const char *mode); //文件名 模式int fclose(FILE *stream);fopen以mode的方式打开或创建文件,如果成功,将返回一个文件指针,失败则返回NULL。fopen创建的文件的访问权限将原创 2016-01-24 23:56:09 · 568 阅读 · 0 评论 -
linux下man指令后面的数字的含义
原文:http://www.cnblogs.com/hnrainll/archive/2011/09/06/2168604.html1、Standard commands (标准命令)2、System calls (系统调用)3、Library functions (库函数)4、Special devices (设备说明)5、File formats (文件格式)6原创 2016-01-22 10:37:50 · 3501 阅读 · 0 评论