PHP proc_open无法写入程序的标准输入

时间:2016-02-04 10:04:11

标签: php c pipe

我想尝试一下PHP proc_open的简单示例。我有一个带有以下代码的C程序

#include <stdio.h>
int main(int argc, char **argv)
{
    int a;
    scanf("%d", &a);
    printf("%d\n", a*a);
    return 0;
}

并且PHP文件具有:

$filename3='start D:\Project2\Debug\Project2.exe';
$descriptorspec = array(
  0 => array("pipe", "r"),  
  1 => array("pipe", "w"), 
);
$process=proc_open($filename3,$descriptorspec,$pipes);
if (is_resource($process))
{
    fwrite($pipes[0],"5");
    fclose($pipes[0]); 
    echo stream_get_contents($pipes[1]);
}

现在,如果我运行这个php,它会在一个单独的窗口中启动Project2.exe,但它不会从管道接收任何输入并等待用户输入,也不会打印stdout的内容。

但是,如果我从 filename3 变量中删除 start 关键字并使其看起来像

$filename3='D:\Project2\Debug\Project2.exe

并运行PHP文件,C程序在后台运行,我可以在网页中查看stdout的内容。

我想单独启动程序并使其从PHP文件接收输入。有可能吗?

0 个答案:

没有答案