gpt4 book ai didi

c++ - 在 stdlib.h 中使用 system() 从程序内部运行程序时,如何模拟键入以提供子程序的 scanf 调用?

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:14 25 4
gpt4 key购买 nike

我正在编写一个程序来一遍又一遍地运行不同的程序,每次给它不同的问题输入,检查输出。 system("the_program") 实现了这一点,但是当它运行 scanf() 时我如何给该程序输入?

最佳答案

最简单的方法是编写一个文件,然后使用重定向(system("the_program < the_file"))将其传递给 child 。

但是,这要好得多,你可以在你的程序和 child 之间建立一个管道。 child 需要将其标准输入(文件描述符 0)连接到管道的读取端。 system是同步的,所以除了pipedup2你需要 forkexecve系统调用。幸运的是,这个过程有一个包装器:popen("the_program", "w") .它返回一个您可以写入的文件*。使用 pclose 关闭文件* , 并且一定要阅读手册,因为它与 fclose 不同!

关于c++ - 在 stdlib.h 中使用 system() 从程序内部运行程序时,如何模拟键入以提供子程序的 scanf 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com