Windows 上的管道

lua-users home
wiki

以下代码在标准 Windows 编译的 Lua 二进制文件中将失败,因为该平台不支持 popen()。
c = "''some shell command''" -- e.g. 'dir'
readfrom("|" .. c) -- this part will alway fail in standard Windows compiled binary
print(read("*a"))
但实际上有一种方法可以在 Windows 上启用对“管道”的支持(在 win2k 和 Lua 4.0 上测试过)。

在 lua-l 上,David Burgess 写道

On VC6, Lua 4.0.1
from the project menu
Goto - "Project/Settings"
Tab - "C/C++"
Select "All configurations"
Edit field - "Preprocessor definitions"

and paste at the end of the existing string
(which should already have something like "WIN32,_CONSOLE,_MBCS")
POPEN,popen=_popen,pclose=_pclose

也尝试了 Windows 上的 lcc。

您可以在编译器->设置面板上将 POPEN 添加到 #defines 中。

但是,_popen 存在一个问题。Win32 API 文档指出它只在控制台应用程序中有效,因此如果您在 Windows 应用程序中嵌入 Lua,那么就会出现问题。但是,有一个补丁 [1],并且已经在 SciTE 中测试过(这也提供了一个“静默”版本的 os.execute)。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2004 年 7 月 2 日下午 6:15 GMT (差异)