linux/进程通信
暴躁的野生猿
请加入裙,欢迎同行一起学习交流,1零251②7672。百度搜索【CSDN 暴躁的野生猿】也可搜到群号码
展开
-
linux进程通信之命名管道
命名管道本质上是个特殊的文件,可以通过shell的mkfifo命令,或者程序的mkfifo( ) 函数来创建这种特殊文件,相关信息可以分别通过shell中的命令来查看:man 1 mkfifo 和 man 3 mkfifoshell命令:man 7 fifo指出:(1)多个进程通过fifo交换数据时,数据并没有真的被写入文件系统,因此文件系统中的fifo文件里面什么内容都没有。(2)只有fifo...翻译 2018-07-02 23:51:39 · 241 阅读 · 0 评论 -
linux进程通信之信号灯(信号量,semaphore)
信号灯通信,和一般意义的通信不大一样,通信一般是用来收发数据,而信号灯却是用来控制多进程访问共享资源的,利用这一功能,信号量也就可以用做进程同步。相关API:1、 int semget(key_t key, int nsems, int semflg);//创建或者打开一个信号灯集(注意:是信号灯集,不是信号灯!) 形参key、semflg不再赘述,和我的另一篇文章《linux进程通信之消息...翻译 2018-07-03 00:27:59 · 5901 阅读 · 2 评论 -
linux进程通信之共享内存
share memory共享内存1、用ftok来生成一个key,参考另一篇博文:消息队列2、int shmget(key_t key, size_t size, int shmflg);//创建/获取共享内存举例: int shmid = shmget(key, 1000, IPC_CREAT | 0666);@key一般来自于ftok函数,@size,要申请的内存的大小,注意,该值会被圆整为内存...翻译 2018-07-05 10:21:39 · 2628 阅读 · 0 评论 -
linux信号量semaphore的几种使用方法(semop函数的特性)
以下提到的几种应用方式,下面都有示例代码。注意:有个点容易遗忘的:当semop的实参sops设置>0的操作时,一般要给这个op动作添加SEM_UNDO标志,详情可参考另一篇博文:linux线程通信之信号量。应用情景一:用信号量打造一个二值信号量(互斥量),也即:任何时刻只允许一个线程访问共享资源。P操作用于占用资源,V操作代表释放资源。使用信号量,关键是要知道semop函数的特性...原创 2018-07-06 13:10:35 · 7152 阅读 · 1 评论 -
linux亲缘进程通信之无名管道
无名管道通信,只能用于父子进程、兄弟进程等具有亲缘关系的进程之间通信。原因也很简单,无名管道文件被放置在内存中虚拟的文件系统中,只有fork/vfork分裂出的亲缘进程,才能继承到无名管道描述符(文件描述符)。重要的系统调用:pipe( )和pipe2( )int pipe2(int pipefd[2], int flags);int pipe(int pipefd[2]);...原创 2018-07-02 21:42:14 · 574 阅读 · 0 评论 -
linux进程通信之消息队列:msg queue
shell 相关命令:ipcs -q -s -m#查看已建立的队列、信号量(semaphore,又译信号灯)、共享内存ipcrm -q 123 #删除id=123的消息队列 一、接口函数:(下述内容基本上翻译的官方man手册,有一些我理解不了的句子,就直接把原文贴上来了)1、key_t ftok(const char *pathname, int proj_id),由文件路径(文...翻译 2018-07-02 00:25:53 · 1839 阅读 · 0 评论