为了账号安全,请及时绑定邮箱和手机立即绑定

在Win32 API中等效于Posix popen()是什么?

/ 猿问

在Win32 API中等效于Posix popen()是什么?

蝴蝶刀刀 2019-08-19 16:49:44

在Win32 API中等效于Posix popen()是什么?

是否与Win32 API中的Linux / Unix stdio.h popen()函数大致相同?如果是这样,我在哪里可以找到它?

编辑:我需要知道这个来修补D标准库中的遗漏。任何答案必须使用标准的Win32 API,没有特定于MSVC的功能。另外,如果存在的话,我更喜欢低级别的东西。


查看完整描述

3 回答

?
一只斗牛犬

MSDN解释了如何使用管道句柄继承中的Windows API执行popen所做的事情。这里提供了一个记录良好的例子。它比_popenJason链接的运行时库中的函数更低级,但仅使用Win32 API。


查看完整回答
反对 回复 2019-08-19
?
若吾皇

_popen如果您正在编写控制台应用程序,则可以调用。有关详细信息,请参阅MSDN站点上的文档:http//msdn.microsoft.com/en-us/library/96ayss4b(VS.80).aspx


查看完整回答
反对 回复 2019-08-19
?
隔江千里

可悲的是,这并不是特别容易。

您需要使用win32函数(CreatePipe)创建管道,然后通常需要复制您给予子进程的管道末尾(DuplicateHandle)以允许它继承,否则它将不会和因此无法使用。

然后你需要使用CreateProcess创建一个进程(它需要很多结构指针,包括一个STARTUPINFO),并在STARTUPINFO中传递你复制为stdout的句柄。

然后你可以从管道的读取端(ReadFile等)读取,直到你到达eof,然后你需要通过关闭所有各种win32句柄来清理。


查看完整回答
反对 回复 2019-08-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信