匿名管道实现进程间通信 为何管道数据不能重复读取
你的if(!ReadFile(hRead,buf,100,&dwRead,NULL))(包括if(!WriteFile(hWrite,buf,strlen(buf)+1,&dwWrite,NULL))
)方法是同步的,它只有在读取到数据或者出现问题的时候才会返回,因此你说的“再点击读取就会假死”其实是readfile函数阻塞了,一直在等待。
而你再次写入数据的时候,readfile就能够读取到数据,也就退出阻塞状态,返回了。
你可以用ReadFileEx,它是异步的,命名管道是可以用的,但是我不是很清楚匿名管道能不能用,你自己试试,或者干脆就使用命名管道方式
e创建匿名管道
.版本 2
.DLL命令 创建匿名管道, 整数型, , "CreatePipe"
.参数 输出管道, 整数型, 传址
.参数 输入管道, 整数型, 传址
.参数 管道属性, 安全属性, 传址
.参数 尺寸, 整数型
下面部分关于计算机操作的E文单词怎么翻译?
试了一下,才知道不好译,需要对相关的内容比较了解才好。
尽管如此,还是硬着头皮译了,希望能有所帮助。
CloseFile 文件-关闭
CreateFile 文件-创建
CreateMailSlot 创建邮件位
CreatePipe 创建管道
DeviceChange 设备改变
DeviceIoControl 设备输入/输出控制
FileStreamInformation 文件流信息
FileSystemControl 文件系统控制
FlushBuffersFile 清空缓冲文件
InternalDeviceIoControl 内部设备IO控制
Load Image 装载映像
LockFile 文件-锁定
NotifyChangeDirectory 提示改变目录
PlugAndPlay 即插即用
Power 电源
Process Create 进程-创建
Process Defined 进程-定义
Process Exit 进程-关闭
Profiling interrupt 配置中断?
QueryAllInformationFile 查询所有信息文件
QueryAttribbuteTagFile 查询属性标签文件
QueryAttributeInformationVolume 查询属性信息卷(容量?)
QueryBasicInformationFile 查询基本信息文件
QueryCompressionInformationFile 查询压缩信息文件
QueryControlInformationVolume 查询控制信息卷
QueryDeviceInformationVolume 查询设备信息卷
QueryDirectory 查询-目录
QueryEAFile ?
QueryEaInformationFile ?
QueryFileInternalInformationFile 查询文件内部信息文件
QueryFileQuota 查询文件配额
QueryFullSizeInformationVolume 查询全尺寸信息卷
QueryInformationVolume 查询信息卷
QueryLabelInformationVolume 查询标签信息卷
QueryMinorCode49> 查询副编码
QueryMoveClusterInformationFile 查询移动簇信息文件
QueryNameInformationFile 查询名字信息文件
QueryNetworkOpenInformationFile 查询网络开启信息文件
QueryObjectIdInformationVolume 查询对象Id信息卷
QueryOpen 查询-打开
QueryPositionInformationFile 查询位置信息文件
QuerySecurityFile 查询安全文件
QuerySizeInformationVolume 查询尺寸信息卷
QueryStandardInformationFile 查询标准信息文件
QueryStreamInformationFile 查询流信息文件
ReadFile 文件-读取
RegCloseKey 注册表-关闭键
RegCreateKey 注册表-创建键
RegDeleteKey 注册表-删除键
RegDeleteValue 注册表-删除值
RegEnumKey 注册表-枚举键
RegEnumValue 注册表-枚举值
RegFlushKey 注册表-清空键
RegLoadKey 注册表-读取键
RegOpenKey 注册表-打开键
RegQueryKey 注册表-查询键
RegQueryKeySecurity 注册表-查询键安全性
RegQueryMultipleValueKey 查询多值键
RegQueryValue 注册表-查询值
RegRenameKey 注册表-重命名键
RegSetInfoKey 设置信息键
RegSetKeySecurity 注册表-设置键安全性
RegSetValue 注册表-设置值
RegUnloadKey 卸载键
SetAllInformationFile 设置全信息文件
SetBasicInformationFile 设置基本信息文件
SetDispositionInformationFile 设置部署信息文件
SetEAFile ?
SetEndOfFileInformationFile 设置文件结尾信息文件
SetFileQuota 设置文件配额
SetLinkInformationFile 设置连接信息文件
SetPipeInformation 设置管道信息
SetPositionInformationFile 设置位置信息文件
SetRenameInformationFile 设置重命名信息文件
SetSecurityFile 设置安全文件
SetShortNameInformation 设置短名称信息
SetValidDataLengthInformationFile 设置合法数据长度信息文件
SetVolumeInformation 设置卷信息
Shutdown 关闭
SystemControl 系统控制
Thread Create 线程-创建
Thread Exit 线程-关闭
Thread Profile 线程-Profile
UnlockFileAll 文件解锁 全部
UnlockFileByKey 文件解锁 按照键
UnlockFileSingle 文件解锁 单个文件
VolumeDismount 卷卸载
VolumeMount 卷装载
WriteFile 文件-写入
加油!
在Visual Studio 中编程C语言的时候,如何连接两个进程的输入和输出?
你要自己创建pipe利用CreatePipe一些列的API,MSDN下载那个最简单的sample code吧://library/windows//ms682499(v=vs.85).aspx
哪位能给我一个管道CreatPipe的例子
我在看了两个小时的MSDN关于CreatePipe用法后,终于搞懂了Pipe是嘛玩意:调用CreatePipe函数其实是开辟了一块内存,返回hRead 和hWrite句柄分别用于读和写,方法和文件操作一样,但管道只能有一个写端,可以有多个读端,所以当把这两个句柄继承给子进程时一定要把主进程的hWrite关掉
如何通过CreateNamedPipe实现不同机器两个进程间的通信?
首先把相应的端口划分到相应的VLAN,然后给VLAN设置SVI地址,该VLAN下所有的主机网关就是该VLAN的SVI地址了,例如VLAN10:192.168.1.1 VLAN20:192.168.2.1
配置好VLAN后在交换机的全局模式输入:ip routing 就OK了。