Linux C
文章平均质量分 81
宋吅吅
这个作者很懒,什么都没留下…
展开
-
进程间通信——共享内存
【共享内存概述】 共享内存时一种最为高效的进程间通信方式,进程可以直接读写内存,不需要任何数据的复制。为了在多个进程之间交换信息,内核专门留出了一块内存区,这段内存区可以由需要访问的进程将其映射到自己的私有地址空间。因此,进程就可以直接读写这一内存区而不需要进行数据复制,从而大大提高了效率。但共享内存本身并不具备同步机制,所以当多个进程共享一段内存时,就需要借助互斥锁、信号量等原创 2012-09-28 00:20:51 · 531 阅读 · 0 评论 -
套接字编程——多进程并发服务器
【服务器代码】#include #include #include #include #include #include #include #include //子进程函数void profun(int client_sockfd){ char buf[100]; int ret; while (1) { memset(buf, 0, sizeof(b原创 2012-09-18 13:36:23 · 840 阅读 · 0 评论 -
线程同步——信号量
【信号量定义】 信号量从本质上是一个非负整数计数器,通过PV原子操作来达到控制公共资源的访问的目的。PV原子操作是对整数计数器信号量sem的操作。一次P操作使sem减1,而一次V操作使sem加1。当信号量sem的值大于等于0时,该进程(或线程)具有公共资源的访问权限;相反,当信号量sem的值小于0时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0为止。 PV原创 2012-09-15 00:33:45 · 561 阅读 · 0 评论 -
进程间通信——管道
一、无名管道 【无名管道简介】 管道是基于文件描述符的通信方式,当一个管道建立时,它会创建两个文件描述符fds[0]和fds[1],其中fds[0]固定用于读通道,而fds[1]固定用于写通道,这样就构成了一个半双工的通道。 【无名管道的创建】 所需头文件:#include 函数原型:int pipe(int fd[2])原创 2012-09-14 19:37:21 · 638 阅读 · 0 评论 -
exce函数族
(1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容;exec函数族可以用来在一个进程中启动另一个可执行文件,该可执行文件将代替当前进程的执行映像(包括原调用进程的数据段、代码段和堆栈段)。该调用并没有生成新的进程,而是在原有进程的基础上,替换原有进程的正文,调用前后是同一个进程,除了进程号PID不变,其他全部被新的进程替换了。这里的可原创 2012-09-13 12:20:59 · 1737 阅读 · 0 评论 -
字符设备和块设备
设备文件分为Block Device Driver和Character Device Drive两类。Character Device Drive又被称为字符设备或裸设备raw devices; Block Device Driver通常成为块设备。而Block Device Driver是以固定大小长度来传送转移资料 ;Character Device Driver是以不定长度的字元传送资料转载 2012-09-11 09:05:56 · 584 阅读 · 0 评论 -
linux硬链接与软链接
1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在原创 2012-09-11 08:58:44 · 733 阅读 · 0 评论 -
线程同步——条件变量
当我们需要控制对内存资源的存取的时候,可以用一种简单的加锁的方法来控制,即互斥锁。但互斥锁有一个明显的缺点,就是它只有两个状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补来互斥锁的不足。条件变量通常和互斥锁一起使用。 【使用过程】 1.调用pthread_mutex_init()函数来初始化一个pthread_t类型的互斥锁原创 2012-09-13 14:41:48 · 573 阅读 · 0 评论 -
Linux文件操作
1. 理解文件描述符1.1 文件描述符的概念 文件描述符是个很小的正整数,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。例如,每个进程启动时都会打开3个文件:标准输入、标准输出和标准错误文件。这3个文件分别对应于文件描述符0、1和2。 提示:应该使用中定义的3个宏来代替数字0、1或2:STDIN_FILENO、STDOU_FILENO和ST转载 2012-09-11 16:24:44 · 802 阅读 · 0 评论 -
用fork()函数产生“进程栈”或者“链式进程”代码,可运行
/************************************************产生5个子进程*(1)5个子进程栈*(2)5个链式子进程***********************************************/#include #include #include #include #include #include原创 2012-09-11 22:26:07 · 505 阅读 · 0 评论 -
进程间通信——System V信号量
【信号量概述】 信号量是用来解决进程之间的同步和互斥问题的一种进程之间的通信机制,包括一个称为信号量的变量和在该信号量下等待资源的进程等待队列,以及对信号量进行的两个原子操作(PV操作)。其中信号量对应于某一种资源,取一个非负的整数值。信号量值指的是当前可用的该资源的数量,若它等于0则意味着目前没有可用的资源。 使用"ipcs"命令可以查看System IPC原创 2012-09-16 00:11:10 · 1136 阅读 · 0 评论