假设我有一个命令,我想在特定的bash
中运行它,pid
我知道。
例如,pid
的{{1}}为bash
。我希望在此100
中使用ls
运行bash
之类的命令,其中我正在另一个pid = 100
中使用bash
执行自动化脚本。
这甚至可能吗?
答案 0 :(得分:0)
当然,有一些黑客允许你做一些看起来有点像它的东西(管道,expect
等)。但主要答案是:不。
通常情况下的简单视图:当您启动ls
之类的流程时,shell会执行fork
和exec
。这意味着新流程是当前流程的子流。孩子将使用它自己的PID执行。举个例子:
pstree -p $$
bash(7695)─┬─pstree(13922)
└─sleep(13899)
在这里,您可以看到我的shell(PID = 7695)和shell执行的sleep
。你看到PID是不同的。它总是如此。它永远不会与另一个进程具有相同的PID。
所以,接下来的问题是你是否可以创建另一个进程(你的PID = 100 shell)fork& exec ls
作为一个孩子(所以使用另一个PID)。答案通常是否定的,除非你为此做了一些规定(比如使用fifo并执行在fifo中转储的行。执行在fifo中转储的所有东西都有一些安全性,呃,让我们称之为挑战。
我的建议:不要去那里。重新评估这样做的原因。