我如何从另一个程序运行一个程序,并通过stdin在c或c ++中将数据传递给它?

She*_*zan 5 c c++ stdin inter-process-communicat

说我有一个exe,可以说sum.exe。现在说sum.exe的代码是

void main ()
{
 int a,b;
 scanf ("%d%d", &a, &b);
 printf ("%d", a+b);
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何从另一个c / c ++程序运行该程序,并通过stdin传递输入,就像它们在ideone这样的在线编译器站点中所做的一样,我在其中键入代码并在文本框中提供stdin数据,并且该数据被该程序使用scanf或cin。另外,我想知道是否有任何方法可以从启动它的原始程序中读取该程序的输出。

小智 0

如何做到这一点取决于平台。

在windows下,使用CreatePipe和CreateProcess。您可以从 MSDN 找到示例: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499 (v=vs.85).aspx

在Linux/Unix下,可以使用dup()/dup2()

一种简单的方法是使用终端(如 Windows 中的命令提示符)并使用 | 重定向输入/输出。

例子:

program1 | program2
Run Code Online (Sandbox Code Playgroud)

这会将program1 的输出重定向到program2 的输入。要检索/输入日期,您可以使用临时文件,如果您不想使用临时文件,则必须使用管道。

对于 Windows,(使用命令提示符):

program1 <input >output 
Run Code Online (Sandbox Code Playgroud)

对于Linux,您可以使用实用程序,您可以通过在linux终端中tee输入找到详细说明man tee