进程启动后重定向

Too*_*rot 4 io-redirection

假设我从终端用 调用了 Firefox firefox,然后我又回到了终端。我现在可以使用 ctrl-z 暂停该进程,并在后台使用bg. 但是,它将继续在终端中产生输出。有没有办法在这一点上重定向?也就是说,要得到firefox &>/dev/null &开始写的结果?

clk*_*clk 5

您可以使用gdb. 您需要找到 firefox 的进程 ID (PID),如果您使用Ctrl+暂停了进程,则该进程 ID 可能包含在挂起消息中Z

如果该消息在您的终端中不包含 PID,您可以使用以下内容找到它:

ps aux | grep firefox
Run Code Online (Sandbox Code Playgroud)

有了这个,你可以使用这个命令来启动gdb

sudo gdb -p PID
Run Code Online (Sandbox Code Playgroud)

在程序中,这些命令会将 stdout 和 stderr 重定向到/dev/null.

p dup2(open("/dev/null",0),1)
p dup2(open("/dev/null",0),2)
detach
quit
Run Code Online (Sandbox Code Playgroud)