我可以在bash中将进程链接到文件吗?

我可以在bash中将进程链接到文件吗?,bash,process,ipc,Bash,Process,Ipc,我想做以下工作: 我想将进程a链接到文件F,因此: 如果F消失,A崩溃 F只在A结束时消失 这可能吗?非常感谢。在Linux上,您已经有了一个几乎具有此属性的文件。如果创建了一个进程,/proc/procNum将在该进程处于活动状态时存在。例如,如果进程编号为1050,则/proc/1050将一直存在,直到进程结束。我不知道删除此文件是否会终止进程,但您可以尝试将两者结合起来。您不应该避免使用PIDs。它们是进程标识符,并且应该被使用 Bash自动监视它启动的子进程。最新的后台进程id保存在

我想做以下工作:

我想将进程a链接到文件F,因此:

  • 如果F消失,A崩溃
  • F只在A结束时消失

这可能吗?非常感谢。

在Linux上,您已经有了一个几乎具有此属性的文件。如果创建了一个进程,/proc/procNum将在该进程处于活动状态时存在。例如,如果进程编号为1050,则/proc/1050将一直存在,直到进程结束。我不知道删除此文件是否会终止进程,但您可以尝试将两者结合起来。

您不应该避免使用PIDs。它们是进程标识符,并且应该被使用

Bash自动监视它启动的子进程。最新的后台进程id保存在$!。Bash还支持使用“%n”语法的作业控件

您可以使用trap SIGCHLD捕获子进程状态更改,并且可以使用wait命令“等待”一个或所有子进程完成

以下是两个流程监控的大致近似值,由示例脚本中启动的“job1”和“job2”组成:

job1 &    # start job1 in background
j1pid=$!  # get its process id
job2 &    # start job2 in background
j2pid=$1  # get its process id

trap 'err=1' ERR  # trap all errors
err=
wait $j1pid  # wait for job1 to complete

# at this point job1 could have completed normally,
# or either process could have had an error

trap - ERR   # revert to "normal" handling of most errors

# kill the processes nicely, or abruptly
# kill -TERM sends the TERM signal to the process, which it can trap
# and do whatever pre-exit process is needed.
# kill -9 cannot be trapped.

for pid in $j1pid $j2pid ; do
  kill -TERM $pid 2>/dev/null || kill -9 $pid
done

如果你说了你想要完成的事情,可能会有帮助。我想监控两个进程,所以如果其中一个崩溃,那么让另一个也崩溃。我读到用它的PID杀死它不是一个好方法,因为另一个进程可以用相同的PID启动。正因为如此,我正在寻找一种避免使用PIDs的方法。谢谢你提供的信息!我已经检查过了,它是一个包含很多文件的目录。我不能删除它(即使我使用sudo),所以我不能做我正在寻找的事情。无论如何,谢谢你:)