1

我有这个从标准输入 sample.c 获取输入的小程序

#include<stdio.h>
main()
{
int l=0;    
scanf("%d",&l);
printf("\n%d",l);
}

当然!编译它: cc sample.c 并得到 a.out ,我正在尝试通过 php 运行它

$runcmd = "./a.out > output.txt";
exec($runcmd,$outp); 
print_r($outp);

我的问题是我不知道如何为这个程序提供输入,以便 scanf 可以读取它?请在这里帮助我!

谷歌搜索给出了一些提示,如 proc_open、popen .... 但我做不到。

提前致谢。

4

3 回答 3

2

看看popen http://se1.php.net/popen

它的工作方式有点像 fopen,当使用 fwrite,写入文件时,您可以写入 proses stdin insted。

$runcmd = "./a.out > output.txt";
$process_stdin = popen($runcmd, 'w');
fwrite($process_stdin, "text to send to process");
pclose($process_stdin);
于 2013-07-30T12:01:49.223 回答
1

如果将 C 程序设计为服务器,则应使用套接字或命名管道。这样,您将能够在不启动它的情况下与之交互。如果你想在你的脚本中多次使用它,你可以使用 popen。如果您只需要使用一次,您可以将参数作为参数传递。

于 2013-07-30T12:07:04.243 回答
1

为什么不将它作为命令行参数传递给您的 C 程序。然后,您可以在 argv[] 中获取输入,而不是使用 scanf。

于 2013-07-30T12:07:25.243 回答