【问题标题】:Using Shell Script to Send Data to Running Process [closed]使用 Shell 脚本将数据发送到正在运行的进程 [关闭]
【发布时间】:2020-01-14 18:53:13
【问题描述】:

我正在开发一个项目,我需要一个 shell 脚本来将数据发送到在后台运行的进程。该脚本将要求一个整数,并将该值发送到在后台运行的 C 进程,该进程将等待该值。是否可以发送该信息?

编辑: 在后台运行的进程将等待一个整数(键值)。该脚本将捕获该值(读取 $pin)。所以想法是脚本会将该值发送到作为 ./program 结果的进程。如果程序被 '-f' 标志破坏,他会在标准输入中等待,如果不是,则不确定他是如何等待接收的。

【问题讨论】:

  • 是的,这是可能的,并且有很多方法可以做到这一点。您需要提供更多信息,即后台进程在等待什么?管道输入、fifo、套接字、共享内存、...
  • "提供更多信息" 允许同时运行多少个脚本实例?
  • 是的,可以与正在运行的进程进行通信,但如何进行取决于该进程侦听信息的方式。简单地将数据注入其内存空间并不是一个好主意(如果操作系统允许的话)。

标签: c bash shell


【解决方案1】:

如果您的后台进程需要标准输入,那么使用命名管道会很好:

mkfifo pipe

./background < pipe

(脚本)

echo "xxx" > pipe

【讨论】:

    【解决方案2】:

    我会使用 [命名] 管道 (man mkfifo)。

    一个简单的例子(单个数字):

    echo "123" | c_app | cat
    

    【讨论】:

    • 一次性使用普通文件可能更简单。
    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2020-03-23
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多