如何让一个读取标准输入的程序在Linux中后台运行?
在Linux上,如果想要使一个程序在后台运行并读取标准输入(stdin),需要解决两个问题。首先,需要提供来自键盘以外的其他来源的标准输入,因为当用户注销时,键盘将不可用。其次,需要确保程序在后台运行。
为了解决这个问题,可以使用以下命令:
nohup prog < inputfile > outputfile 2> errorlogfile
其中,"prog"是要运行的程序的名称。这个命令将"inputfile"文件中的内容作为标准输入,并将程序的输出重定向到"outputfile"文件中。同时,任何错误信息将被重定向到"errorlogfile"文件中。
通过使用这个命令,可以确保程序在后台运行,并且可以从文件中读取标准输入,而不受键盘可用性的限制。这对于需要长时间运行的程序或需要在用户注销后继续运行的程序特别有用。
你可能正在寻找使用screen命令解决该问题:
$ screen $ prog < inputfile # 按下CTRL-A, CTRL-D从screen tty中分离 # 退出或关闭控制台;重新登录或稍后启动另一个控制台。 # 要重新连接到screen tty: $ screen -r
在Linux系统上,有时我们需要在后台运行一个从stdin读取输入的程序。这种情况下,我们可以使用screen命令来解决这个问题。
screen是一个终端多路复用程序,它允许我们在一个终端窗口中运行多个终端会话。通过使用screen,我们可以在后台运行一个程序并将其与终端会话分离,然后稍后重新连接到该会话。
要在后台运行一个从stdin读取输入的程序,我们可以按照以下步骤操作:
1. 打开一个终端窗口并输入`screen`命令。
2. 输入要运行的程序命令,例如`prog < inputfile`,其中`inputfile`是要读取的输入文件。
3. 按下CTRL-A,然后按下CTRL-D。这将分离当前的screen tty,并将程序转到后台运行。
4. 可以退出或关闭当前终端窗口,然后稍后重新登录系统或打开另一个终端窗口。
5. 要重新连接到之前分离的screen tty,可以使用命令`screen -r`。
通过以上步骤,我们可以在后台运行一个从stdin读取输入的程序,并且可以随时重新连接到该程序的终端会话。这样我们就可以在程序运行的同时进行其他操作,而不会中断程序的执行。
希望这个解决方法对你有帮助!