这种匿名管道,和读写文件类似。最好是一个进程读,一个进程写,适合单向通信,不适于双向通信,双向通信容易导致的问题是有可能,读到自己进程刚才写的内容。纯手工代码,没有一丝拷贝父进程代码:// PipeServer.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#in...
分类:
其他好文 时间:
2015-07-18 07:12:35
阅读次数:
103
有些时候我们需要利用管理员权限做某些事情 如操作注册表、读写文件、提权 或
利用匿名管道运行net修改用户密码 提取信息 配置系统/软件等等 好了下面我会列
出几种检查是否以管理员身份运行的代码。
1.
declare
BOOL IsNTAdmin(__int32 dwReserved, __int32 lpdwReserved);
...
消息队列是在两个进程之间传递二进制块数据的一种简单有效的方式。每个数据块都有一个特定的类型,接收方可以根据类型来有选择的接收数据,而不一定像管道和匿名管道那样必须以先进先出的方式接收数据。
Linux消息队列的4个API包括四个系统调用:msgget、msgsnd、msgcrv和msgctl
#include
int msgget( key_t key, int msgf...
分类:
系统相关 时间:
2015-07-01 10:16:13
阅读次数:
2500
管道分为 匿名管道 和 命名管道 。
1.匿名管道只能在父子进程间进行通信,不能在网络间通信,而且数据传输是单向的,只能一端写,另一端读。
2.命令管道可以在任意进程间通信,通信是双向的,任意一端都可读可写,但是在同一时间只能有一端读、一端写。每一个 命名管道 都有一个唯一的名字以区分于存在于系统的命名对象列表中的其他命名管道。管道服务器在调用CreateNamedPipe()函数创建命名管道的...
1. 前言
本篇文章的所有例子,基于RHEL6.5平台。前一篇文章介绍了匿名管道。点此链接。
2.介绍
管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只...
分类:
系统相关 时间:
2015-06-17 01:52:59
阅读次数:
253
1. 前言
本篇文章的所有例子,基于RHEL6.5平台。本篇只介绍管道(匿名管道/普通管道),命名管道在后续文章中会介绍。
2.管道特性
管道是Linux支持的最初Unix IPC形式之一,具有以下特点:
--管道是半双工的,数据只能向一个方向流动,一端输入,另一端输出。需要双方通信时,需要建立起两个管道。
--管道分为普通管道和命名管道。普通管道位于内存,只能用...
分类:
系统相关 时间:
2015-06-17 01:52:27
阅读次数:
258
FIFO解决了在进程通信的时候产生大量临时文件的问题,并且可以实现非血缘关系进程间的通信,而且可以保留给后来的进程使用。FIFO的读写规则和匿名管道的读写规则相似,不过FIFO保存在磁盘上,而匿名管道保存在内存里。当FIFO的写进程关闭的时候,会向FIFO的读进程发送一个文件结束符。客户端:#inc...
分类:
其他好文 时间:
2015-06-09 15:34:54
阅读次数:
243
1.mkfifo -m 777 fifo1 : 创建一个有名管道,权限是7772.可以实现无关进程间的通信,克服了匿名管道的缺陷3.,管道文件最前面是 p4.管道文件传输信息类似于文件,但又区别于普通文件,管道文件在数据读出后,管道中就会同时清除数据5.函数创建管道: #include#includ...
分类:
其他好文 时间:
2015-06-09 09:37:08
阅读次数:
135
假设程序维护一个匿名管道,fd[0]读端,fd[1]写端。父进程从管道中读数据,子进程循环读取一个文件并将读到得到内容写入管道。
这时如果不注意的话,很容易出现读管道的无限阻塞。
读管道如下 nread = read(fd[0],buffer,size);
当父进程 向管道中写入最后数据时,最后一次写入的数据可能比size小,也就是管道中的数据少于size。这时我的程序出现了read()一直...
分类:
其他好文 时间:
2015-05-18 22:57:33
阅读次数:
506
进程间通信的方式有很多,常用的方式有:1.共享内存(内存映射文件,共享内存DLL)。2.命名管道和匿名管道。3.发送消息本文是记录共享内存的方式进行进程间通信,首先要建立一个进程间共享的内存地址,创建好共享内存地址后,一个进程向地址中写入数据,另外的进程从地址中读取数据。在数据的读写的过程中要进行进...