【发布时间】:2020-02-18 14:16:20
【问题描述】:
如何在Linux中使用“CreatePipe”和“CreateProcessW”函数,当我在Linux中编译C++代码时,出现如下错误: 'CreatePipe' is not declared in this scope。 'CreateProcessW' 未在此范围内声明。
【问题讨论】:
-
CreateProcessW似乎来自 Windows API?如果是这样,那不是语言标准的一部分,您需要找到(如果有的话)Linux 或 POSIX 等价物(换句话说,您不能期望使用任何 Windows API 的 C++ 代码在没有一些重大变化)。 -
这些是 Windows 系统调用。我认为最接近 POSIX/linux/etc。相当于
CreatePipe()将是mkfifo()如果你想要一个命名管道和pipe()对于一个匿名管道(我不记得Windows函数是哪个) -
popen可能是一个选项。 -
直接使用API没有什么不好,因为它可以优化代码。但它应该在您的应用程序的最低级别完成。如果你想把它移植到不同的系统上,你可以用新系统上更好的东西重写那个低层。但是试图在另一个系统上模仿一个系统的低级实现是错误的...... 勇敢。
-
CreateProcessW 可能最接近于
posix_spawn()。CreatePipe创建一个匿名管道 - POSIX 中的类似物是pipe()。