社区
Linux/Unix社区
帖子详情
请问LINUX进程间通讯采用什么方式?谢谢了。
kellychen
2003-12-31 01:54:16
谢谢了
...全文
115
8
打赏
收藏
请问LINUX进程间通讯采用什么方式?谢谢了。
谢谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
进程
间
通讯
进程
间
通信: 一、管道(pipe)及有名管道(named pipe) 管道可用于具有亲缘关系的父子
进程
间
的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系
进程
间
的通信。 实现机制: 管道是由内核管理的一个...
进程
间
通信的7种
方式
极力推荐文章:欢迎收藏Android 干货分享和您一起终身学习,这里是程序员Android
进程
间
通信的概念每个
进程
各自有不同的用户地址空
间
,任何一个
进程
的全局变量在另一...
Linux
|
进程
间
通信之共享内存
} 运行结果
Linux
当中,我们可以使用ipcs命令查看有关
进程
间
通信设施的信息 此时我们可以看到我们的共享内存创建成功了,当我们再次运行我们的代码,我们发现报错了 共享内存的释放 通过上面的实验可以发现,当我们...
linux
进程
间
使用unix socket通信
虽然网络socket也可用于同一台主机的
进程
间
通讯
(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从...
RCF—用于C++的
进程
间
通讯
RCF—用于C++的
进程
间
通讯
导言 RCF(Remote Call Framework,远程调用框架)是一个C++的框架。这个框架用来为实现C++程序
进程
间
调用提供一个简单和一致(consistent)的方法。...
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章