当前位置: 首页 > news >正文

VC++父进程交互式操作子进程标准输入输出

父进程接管子进程的标准输入输出和错误,实现对子进程的交互操作。比如子进程是一个类似mysql这种可以交互的命令,执行操作后输出结果,父进程根据结果分析决定执行下一步的命令,从而替代人工的输入。
通过父进程创建子进程,使用管道重定向子进程的输入输出错误可以实现

在 Windows 中,可以使用匿名管道(Anonymous Pipes)实现两个进程之间的通信。匿名管道是一种用于进程间通信的轻量级通信机制,仅适用于父子进程之间或兄弟进程之间的通信。

实现管道发送和接收的具体流程如下:
1.在父进程中创建匿名管道,获取管道的读取端和写入端的句柄。

HANDLE hReadPipe; // 读取端句柄
HANDLE hWritePipe; // 写入端句柄SECURITY_ATTRIBUTES sa; // 安全属性
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE; // 句柄可以被子进程继承
sa.lpSecurityDescriptor = NULL; // 安全描述符BOOL bSuccess = CreatePipe(&hReadPipe, &hWritePipe, &sa, 0); // 创建匿名管道
if (!bSuccess) {// 管道创建失败,处理错误return;
}

2.在父进程中启动子进程,并将管道的写入端句柄传递给子进程的 STARTUPINFO 结构体中。

STARTUPINFO si;//程序启动信息,使用 CreateProce
http://www.lryc.cn/news/180166.html

相关文章:

  • 一步一招,教你如何制作出成功的优惠促销微传单
  • 27、Flink 的SQL之SELECT (Pattern Recognition 模式检测)介绍及详细示例(7)
  • Git使用【上】
  • flink的序列化基准测试
  • Error: node: unknown or unsupported macOS version: :dunno 错误解决
  • 嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理②
  • Kolmogorov-Smirnov正态性检验
  • BI神器Power Query(25)-- 使用PQ实现表格多列转换(1/3)
  • windows系统一键开启和关闭虚拟化
  • NSSCTF做题(5)
  • java基础题——二维数组的基本应用
  • Leetcode 2119.反转两次的数字
  • BI神器Power Query(27)-- 使用PQ实现表格多列转换(3/3)
  • VUE3照本宣科——认识VUE3
  • 《计算机视觉中的多视图几何》笔记(12)
  • TFT LCD刷新原理及LCD时序参数总结(LCD时序,写的挺好)
  • 基于Java的电影院购票系统设计与实现(源码+lw+部署文档+讲解等)
  • Linux基础指令(六)
  • Anderson-Darling正态性检验【重要统计工具】
  • Ubuntu基于Docker快速配置GDAL的Python、C++环境
  • <C++> 哈希表模拟实现STL_unordered_set/map
  • 【数据结构与算法】通过双向链表和HashMap实现LRU缓存 详解
  • MySQL的内置函数
  • 数据结构与算法-(7)---栈的应用-(3)表达式转换
  • Lilliefors正态性检验(一种非参数统计方法)
  • 【云原生】配置Kubernetes CronJob自动备份MySQL数据库(单机版)
  • 基于PSO算法的功率角摆动曲线优化研究(Matlab代码实现)
  • 数论知识点总结(一)
  • 知识分享 钡铼网关功能介绍:使用SSLTLS 加密,保证MQTT通信安全
  • asp.net core mvc区域路由