0

是否可以在其启动参数中设置进程终止?

我想要做的是设置一个进程在它开始之前或它开始时终止。

cat > $pipe当我尝试通过添加 & 和 $来获取打开的命名管道的 pid 时!在它之后,它用“>”符号向终端发送垃圾邮件,所以我想知道是否可以从cat > $pipe一个参数开始,在 PID 的 SIGHUP 上死掉。

我该怎么做呢?如果我在 之后放任何东西,它对cat > $pipe我来说将无法正常工作。

4

2 回答 2

1

“获取打开的命名管道的 pid” 命名管道没有 pid,只有进程有 pid(线索在 'p' 中)

但是,这似乎与问题的标题无关。默认情况下,进程将在 SIGHUP 上终止。但是,子进程继承父进程的信号掩码,因此如果父进程忽略 SIGHUP,那么子进程就会出现这种情况(对于处理程序而言并非如此)。因此,您可以使用(例如)强制模具:

trap 'exit 128' SIGHUP

但是问题的这一部分与命名管道有什么关系呢?您是否正在尝试查找哪些进程打开了管道?您可以为此迭代 /proc 。

在 OP 发表评论后进行编辑:

如果您运行,cat > mypipe &那么cat将挂起尝试访问键盘 -cat默认情况下读取 STDIN。

[1]+  Stopped                 cat > mypipe

因此,您必须将其带入前台(fg)才能输入数据,通常以<CTRL>+D. 我不知道你为什么要以cat这种方式使用。

无论如何,如果你在后台运行,很容易获得后台作业的 pid:
假设它是 1 号作业

set $(jobs -l %1)
pid=$2

也许您可以进一步调查为什么您不能在后台运行该作业,并显示一个示例(使用该script命令在名为 的文件中获取会话副本typescript

于 2012-07-03T07:49:16.700 回答
0

你试过把它放在括号里吗?(cat > $pipe) &$

于 2012-07-03T04:42:15.050 回答