【发布时间】:2021-01-25 18:16:55
【问题描述】:
我正在编写一个程序(用 c 语言)来比较两个可执行文件的输出。我在上大学,想要一个很好的方法来比较我教授的项目代码输出(我需要在我的代码中复制的行为)和我的代码输出。如果我不必担心用户输入,这将很容易。
基本思想: 我对这个项目的想法是我将创建两个额外的流程。其中一个运行我的代码并将输出发送到文件,并运行我的教授代码并将输出发送到文件。在每个进程中,程序可能会提示用户进行一些输入。我不想在主程序执行期间手动输入输入。我希望主要程序参数之一是传递给每个程序的参数。
我的问题: 我需要一种方法来准确地知道子程序何时请求用户输入,并且我需要一些方法来将参数发送到每个子程序。我熟悉进程之间的通信,但我不确定如何模拟用户输入。我希望能够将它用于我的所有编程任务,这意味着我不希望每次收到新任务时都必须修改代码。此外,我无权访问教授代码,因此无法修改它。我只能访问可执行文件。我该怎么办?
【问题讨论】:
-
编写一个程序会更简单,在该程序中分叉进程,让父进程执行您的程序,子进程使用相同的输入处理您的教授。将输出通过管道传输到两个不同的文件中,即 myFile 和 profFile 并使用 diff 比较两个输出。
-
是的,我知道。我的目标是不必为两个程序手动进行用户间输入。如果那是不可能的,我会那样做。
-
那么,您为什么不在文件中手动输入您的输入一次,每一行都包含您通常会输入的用户输入(手动),然后启动程序并在您教授的程序中输入文件?即
./myProgramm < inputFile程序何时要求用户输入并不重要,因为它会从 inputFile 中读取。