社区
Linux/Unix社区
帖子详情
请问LINUX进程间通讯采用什么方式?谢谢了。
kellychen
2003-12-31 01:54:16
谢谢了
...全文
111
8
打赏
收藏
请问LINUX进程间通讯采用什么方式?谢谢了。
谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aaassd
2004-01-02
打赏
举报
回复
mark
slippercat
2003-12-31
打赏
举报
回复
我贴篇:
进程间通讯
基本概念
管道
FIFO
System V 的 IPC 机制
共享内存
信号量
5.12.1 基本概念
为什么需要 IPC
原子操作, 死锁和竞态
同步
5.12.2 管道
最常见的 IPC 机制
通过 pipe 系统调用
===============================================================================
#include <unistd.h>
int pipe(int filedes[2]);
------------------------------------------------------------------------------
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define MAXLINE 256
void err_sys (const char* info)
{
perror (info);
exit (1);
}
int mian (void)
{
int n, fd [2];
pid_t pid;
char line [MAXLINE];
if (pipe (fd) < 0)
err_sys ("pipe error");
if ( (pid = fork ()) < 0)
err_sys ("fork error");
else if (pid > 0) { // parent
close (fd [0]);
write (fd [1], "hello world\n", 12);
}
else { // child
close (fd [1]);
n = read (fd[0], line, MAXLINE);
write (STDOUT_FILENO, line, n);
}
exit (0);
}
===============================================================================
数据要经过内核传递, 效率较低
只能在关系进程之间进行, 比如父子进程之间
管道是单工的
5.12.3 FIFO
FIFO 又称作命名管道
FIFO 是存在于文件系统的对象, 用 "mknode <name> p", 或 mkfifo (1, 3) 命令或函数建立
通过 FIFO 的通讯可发生在任何两个进程之间, 只要对 FIFO 有适当的访问权限
对 FIFO 的读写操作与普通文件类似
用 FIFO 实现的 C/S 结构
5.12.4 System V 的 IPC 机制
消息传递
共享内存: 效率最高的 IPC 机制, 但没有同步机制
信号量: 实际是一种同步机制, 通常与共享内存一起使用
标识符和键
===============================================================================
* 标识符用来标识 IPC 对象.
* 利用 msgget, semget, shmget 等函数建立 IPC 对象时, 必须指定键. 指定建为
IPC_PRIVATE 时, 可建立新的 IPC 对象.
* 作为服务器的进程建立新的 IPC 对象之后, 可将返回的标识符写入一个预先约定
的文件, 从而可让客户获得标识符; 或者, 在关系进程之间, 可通过命令行参数
传递标识符.
* 两个进程可约定同一个键, 比如通过共同的头文件, 服务器负责事先建立新 IPC 对象,
客户只许通过键获得标识符.
* 两个进程可通过 ftok 函数生成键. 该函数利用一个文件名和项目 ID 工作.
===============================================================================
ipcs 可用来管理系统中的 IPC 对象
5.12.5 共享内存
parsees
2003-12-31
打赏
举报
回复
管道、消息、共享内存、邮箱都有。
yudang
2003-12-31
打赏
举报
回复
这么高深啊
呵呵,网络编程确实是个很有乐趣的东东
fierygnu
2003-12-31
打赏
举报
回复
买本《UNIX网络编程》第二卷吧。
HostOOP
2003-12-31
打赏
举报
回复
管道、共享内存、消喜队列。如果安排得好的话,使用普通文件也可以实现进程间的信息交换。
love_vc
2003-12-31
打赏
举报
回复
管道、共享内存、消息
kellychen
2003-12-31
打赏
举报
回复
我只知道用管道可以,还有什么方式嘛?哪里有这方面的资料?
谢谢了
Linux
之
进程
间
通信——管道
管道是
Linux
中最古老的
进程
间
通信的
方式
,本文介绍了
进程
间
通信的相关概念,主要介绍了匿名管道和命名管道。
linux
进程
间
通讯
进程
间
通信: 一、管道(pipe)及有名管道(named pipe) 管道可用于具有亲缘关系的父子
进程
间
的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系
进程
间
的通信。 实现机制: 管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条。管道的一端连接一个
进程
的输出。这个
进程
会向管道中放入信息。管道的另一端连接一个
进程
的输入,这个
进程
取出被放入管道的信息。一个缓冲区不需要
进程
间
通信的7种
方式
极力推荐文章:欢迎收藏Android 干货分享和您一起终身学习,这里是程序员Android
进程
间
通信的概念每个
进程
各自有不同的用户地址空
间
,任何一个
进程
的全局变量在另一...
Linux
|
进程
间
通信之共享内存
共享内存的建立大致包括以下两个过程: 在物理内存当中申请共享内存空
间
。 将申请到的共享内存挂接到地址空
间
,即建立映射关系。 共享内存的释放大致包括以下两个过程: 将共享内存与地址空
间
去关联,即取消映射关系。 释放共享内存空
间
,即将物理内存归还给系统。
linux
进程
间
使用unix socket通信
前言:前些天实现了unix socket的通信,本想完完全全自己写一篇博客记录下来,但写的时候发现对于socket知识的理解还有所欠缺,故引用其他博客写的比较好的部分综合一下,这样让大家更容易理解。 一、Unix socket概述(参考于博客http://blog.csdn.net/bingqingsuimeng/article/details/8470029): socket API
Linux/Unix社区
23,125
社区成员
74,509
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章