初始化后父母可以更改子进程的STDIN吗?

时间:2013-12-11 14:44:20

标签: winapi

可以在初始化时使用LPSTARTUPINFO结构执行此操作,但可以在子进程已运行后完成。目标是让子进程从STDIN读取,但是父进程每隔一段时间就应该切入,并通过不同的匿名管道发送内容。

2 个答案:

答案 0 :(得分:1)

为什么不在与父级相同的控制台窗口中启动子级?然后你可以在父母中读取键盘输入并将其传递给孩子,偶尔会穿插你的其他输入。

如果您的父进程是GUI应用程序,那么请编写一个额外的控制台应用程序来完成这项工作。

如果孩子必须在一个单独的窗口中运行,你可以使用相同的技巧:在自己的窗口中创建一个与孩子共享窗口的新流程。

答案 1 :(得分:1)

父级在创建子进程后无法更改子级的STDIN。但是,父级可以创建可继承的管道并将其句柄值作为命令行参数传递给子级,然后子级可以提取该值并根据需要使用管道,而不会影响其正常的STDIN。孩子可以定期调用PeekNamedPipe(),或使用工作线程来监视管道输入数据。