自动为已执行的程序提供输入

时间:2017-04-06 18:25:51

标签: c bash command-line automation

我有一个C程序,我想运行而无需手动输入命令。我有4个命令(如果你计算退出程序的那个,则为5个)我想要给程序,我不知道从哪里开始。我见过像

这样的东西
./a.out <<<'name'

传入一个字符串,但这对我来说并不适用。 我遇到的其他问题更难以解决,其中一个命令将提供输出,并且输出需要是后续命令的一部分。如果我可以访问源代码,我可以在一些循环和计数器中暴力破解,所以我试图抓住它但是现在我没有它就卡住了。我认为有一种方法可以用bash脚本来做这件事,但我不知道那会是什么。

1 个答案:

答案 0 :(得分:0)

在简单的情况下,bash脚本是可能的:在coproc中运行可执行文件(需要版本4)。一个简短的例子:

#!/bin/bash

coproc ./parrot

echo aaa >&${COPROC[1]}
read result <&${COPROC[0]}
echo $result
echo exit >&${COPROC[1]}

parrot(测试可执行文件):

#!/bin/bash

while [ true ]; do
  read var
  if [ "$var" = "exit" ]; then exit 0; fi
  echo $var
done

对于更严重的情况,请使用expect