【问题标题】:Send "user input" to a process running a program with exec将“用户输入”发送到使用 exec 运行程序的进程
【发布时间】:2021-01-25 18:16:55
【问题描述】:

我正在编写一个程序(用 c 语言)来比较两个可执行文件的输出。我在上大学,想要一个很好的方法来比较我教授的项目代码输出(我需要在我的代码中复制的行为)和我的代码输出。如果我不必担心用户输入,这将很容易。

基本思想: 我对这个项目的想法是我将创建两个额外的流程。其中一个运行我的代码并将输出发送到文件,并运行我的教授代码并将输出发送到文件。在每个进程中,程序可能会提示用户进行一些输入。我不想在主程序执行期间手动输入输入。我希望主要程序参数之一是传递给每个程序的参数。

我的问题: 我需要一种方法来准确地知道子程序何时请求用户输入,并且我需要一些方法来将参数发送到每个子程序。我熟悉进程之间的通信,但我不确定如何模拟用户输入。我希望能够将它用于我的所有编程任务,这意味着我不希望每次收到新任务时都必须修改代码。此外,我无权访问教授代码,因此无法修改它。我只能访问可执行文件。我该怎么办?

【问题讨论】:

  • 编写一个程序会更简单,在该程序中分叉进程,让父进程执行您的程序,子进程使用相同的输入处理您的教授。将输出通过管道传输到两个不同的文件中,即 myFileprofFile 并使用 diff 比较两个输出。
  • 是的,我知道。我的目标是不必为两个程序手动进行用户间输入。如果那是不可能的,我会那样做。
  • 那么,您为什么不在文件中手动输入您的输入一次,每一行都包含您通常会输入的用户输入(手动),然后启动程序并在您教授的程序中输入文件?即./myProgramm < inputFile 程序何时要求用户输入并不重要,因为它会从 inputFile 中读取。

标签: c input process pipe fork


【解决方案1】:

看看expect(1)。它应该可以满足您的所有需求。

【讨论】:

    猜你喜欢
    • 2015-01-27
    • 2012-06-14
    • 2020-12-12
    • 2011-07-02
    • 1970-01-01
    • 2019-04-18
    • 2012-11-06
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多