【问题标题】:How to make a program reading stdin run in background on linux?如何使读取stdin的程序在linux后台运行?
【发布时间】:2015-11-16 07:00:17
【问题描述】:

我有一个程序在 while 循环中从标准输入读取。即使关闭控制台,我也需要在后台运行它。如果程序名称是prog,我该怎么做?

【问题讨论】:

  • 如果我输入命令 echo -e "\004" |./prog &,在我关闭控制台后,进程结束
  • 如果关闭控制台,如何从标准输入读取?
  • 你的stdin 是什么?一个tty?你问为什么?请编辑您的问题以激发它
  • 用于后台处理进程并使其运行与它启动的控制台/终端分离:$ bg %1; disown %1。 (或者你的程序有任何 PID。)

标签: linux shell


【解决方案1】:

您必须提供从键盘以外的其他来源重定向的标准输入(当您注销时它会消失),但是

nohup prog < inputfile > outputfile 2> errorlogfile

应该可以解决问题。

【讨论】:

    【解决方案2】:

    当我 24 年前开始使用 UNIX 时,我也有同样的问题。

    如果您是新手,那么您正在寻找的是tmux:在这里您可以启动一个从 STDIN 读取的程序,注销,稍后再登录,然后继续。

    否则nohup是正确答案。

    【讨论】:

    • tmux 对我来说是一个新的,但它看起来非常有用。我想我还有一些阅读要做。
    【解决方案3】:

    您可能正在寻找screen

    $ screen
    $ prog < inputfile
    # CTRL-A, CTRL-D to detach from the screen tty
    # Log out or close console; log back in, or start another console later. 
    # To re-attach to the screen tty:
    $ screen -r
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多