C++ 当使用stdlib.h中的system()从程序中运行程序时,如何模拟键入以提供子程序的scanf调用?
我正在编写一个程序,反复运行一个不同的程序,每次给一个问题不同的输入,检查输出。系统\u程序完成了这一点,但是当它运行scanf时,我如何给程序输入?最简单的方法是编写一个文件,并使用重定向系统将其传递给子系统\u程序 但是,这样更好,你可以在你的程序和孩子之间建立一个管道。子级需要将其标准输入文件描述符0连接到管道的读取端。系统是同步的,所以除了pipe和dup2之外,还需要fork和execve系统调用。幸运的是,这个过程有一个包装器:popenthe_程序,w。它返回一个可以写入的文件*。使用pclose关闭文件*,并确保阅读手册,因为它与fclose不同 在编写父程序和子程序的情况下,不需要通过模拟其他程序来解决问题,我们只需传入参数: 系统“/\u程序\u扫描\u输入” 当然,联合大学项目:C++ 当使用stdlib.h中的system()从程序中运行程序时,如何模拟键入以提供子程序的scanf调用?,c++,c,C++,C,我正在编写一个程序,反复运行一个不同的程序,每次给一个问题不同的输入,检查输出。系统\u程序完成了这一点,但是当它运行scanf时,我如何给程序输入?最简单的方法是编写一个文件,并使用重定向系统将其传递给子系统\u程序
var = argv[1] //this was var = scanf('%', &var)
我相信fork和另一个系统“input”调用可以做到这一点。信心评级不够高,无法作为答案发布。。!已经完成了-请参阅,因为我没有访问子级源的权限,所以无法修改它以接受作为参数的输入。它需要扫描。哦,我的道歉-我以为你们两个都在写。编辑答案以反映。编辑:阅读后,波本似乎只允许单向运动;我需要双向输入,以便将输出与输入进行比较。因此,我将不得不自己做管道和叉子之类的事情。非常感谢你。