我正在编写一个程序来反复运行一个不同的程序,每次给它一个问题的不同输入,检查输出。 system("the_program")
完成此操作,但如何在运行scanf()
时提供该程序输入?
答案 0 :(得分:1)
最简单的方法是编写一个文件,并使用重定向(system("the_program < the_file")
)将其传递给子文件。
但是,这要好得多,你可以在你的程序和孩子之间建立一个管道。子项需要将其标准输入(文件描述符0)连接到管道的读取侧。 system
是同步的,因此除了pipe
和dup2
之外,您还需要fork
和execve
系统调用。幸运的是,这个过程有一个包装器:popen("the_program", "w")
。它返回一个可以写入的FILE *。使用pclose
关闭文件*,并确保阅读手册,因为它与fclose不同!
答案 1 :(得分:-1)
如果您正在编写两个父程序和子程序,则无需解决因模拟其他内容而产生的问题,而我们只能通过在论点中:
system('./the_program the_scanf_input')
当然是__程序:
var = argv[1] //this was var = scanf('%', &var)