gpt4 book ai didi

c - 简单的 Bash-C 通信

转载 作者:行者123 更新时间:2023-12-04 05:27:19 25 4
gpt4 key购买 nike

我正在尝试构建一个脚本来响应一个简单的 C 程序。我猜脚本需要逐行阅读并解析文本,直到找到问题为止。然后它必须回复相同的标准输出。该脚本以无限循环方式读入,然后我在命令行上启动它

./script.sh &

为了让它在后台运行。然后,在同一个终端中,我启动我的 C 程序,该程序在命令行上输出并在 scanf 处等待。
我的问题是,这两个进程似乎正在与不同的标准输出进行交互,因为它们无法“看到”彼此。显然我误解了一些东西......有什么帮助吗?
#!/bin/bash
for (( ; ; )) do
while read line; do
if [ "$line" == ">" ] then
echo "yes"
fi
done
done

最佳答案

使用 expect 怎么样? ? Expect 是一种以编程方式回复交互式应用程序的 Unix 工具,对于解决像您这样的问题非常有用。当然,您可以在 bash 脚本中使用它。

您的问题的答案类似于:

#!/bin/bash

expect << EOF
spawn simple_c_application
expect ">"
send "yes\r"
expect eof
EOF

该脚本将生成您的应用程序,为您检查输出并回复 当输出行包含 > .您还可以在您的期望模式中使用 anchor :字符 ^匹配行首和 $结束。所以 ^>$仅当该行正好是 时才匹配> .

你只需要从你的包管理器安装 expect ,然后像往常一样使用 bash 脚本。

关于c - 简单的 Bash-C 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13037934/

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