猿问

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

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

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

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


蝴蝶刀刀
浏览 773回答 3
3回答

一只斗牛犬

它比_popenJason链接的运行时库中的函数更低级,但仅使用Win32 API。

隔江千里

可悲的是,这并不是特别容易。您需要使用win32函数(CreatePipe)创建管道,然后通常需要复制您给予子进程的管道末尾(DuplicateHandle)以允许它继承,否则它将不会和因此无法使用。然后你需要使用CreateProcess创建一个进程(它需要很多结构指针,包括一个STARTUPINFO),并在STARTUPINFO中传递你复制为stdout的句柄。然后你可以从管道的读取端(ReadFile等)读取,直到你到达eof,然后你需要通过关闭所有各种win32句柄来清理。
随时随地看视频慕课网APP
我要回答