|
|
1
6
在Windows上,首先调用CreatePipe(类似于管道(2)),然后调用CreateProcess。这里的技巧是CreateProcess有一个参数,您可以在其中传递新创建的进程的stdin、stdout、stderr。 请注意,当您使用stdio时,需要执行fdopen来创建文件对象,该对象需要文件号。在Microsoft CRT中,文件编号与操作系统文件句柄不同。因此,要将CreatePipe的另一端返回给调用者,首先需要_open_osfhandle获取CRT文件号,然后fdopen。
http://svn.python.org/view/python/trunk/Modules/posixmodule.c?view=markup |
|
2
0
我认为,通过使用popen2()函数抽象出跨平台问题,您已经为您的问题提供了一个很好的开端。我本想来建议“插座”,但我相信在阅读了问题后,这与此无关。您可以使用套接字而不是管道-它将隐藏在popen2()函数中。
我99%确信您可以使用Windows API在Windows上实现所需的功能。我不能做的是给你指出正确的函数。但是,您应该知道,Microsoft提供了大多数类似于POSIX的API调用,但是名称的前缀是“389;”。还有一些本机API调用可以实现
您的评论表明,您已意识到数据可用性问题和可能的死锁——请谨慎。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |