温馨提示×

nohup命令如何处理进程的标准输入

小樊
62
2025-08-31 03:56:55
栏目: 编程语言

nohup(no hang-up)命令用于在后台运行一个进程,使其在用户退出登录后仍然继续运行。默认情况下,nohup会将进程的标准输出和标准错误重定向到一个名为nohup.out的文件中。

如果你想让nohup命令处理进程的标准输入,可以使用以下方法:

  1. 使用文件描述符:

    你可以将一个文件描述符指向标准输入,然后将其传递给你的程序。例如,假设你有一个名为input.txt的文件,你可以使用以下命令将文件描述符3指向该文件,并将其传递给你的程序:

    nohup your_command < input.txt 3>&1 &
    

    这里,< input.txt表示将文件描述符0(标准输入)指向input.txt3>&1表示将文件描述符3(原本指向标准输入)重定向到文件描述符1(标准输出),&表示将进程放入后台运行。

  2. 使用管道:

    你可以创建一个管道,将管道的一端作为进程的标准输入,另一端作为进程的标准输出。例如,你可以使用以下命令创建一个名为pipe的管道,并将其传递给你的程序:

    mkfifo pipe
    nohup your_command < pipe 3>&1 &
    cat input.txt > pipe
    

    这里,mkfifo pipe命令创建了一个名为pipe的管道,< pipe表示将文件描述符0(标准输入)指向管道,cat input.txt > pipe命令将input.txt的内容写入管道。

这样,你的程序就可以通过标准输入读取数据,同时将输出发送到nohup.out文件或另一个指定的文件中。

0