200>
重定向操作符使用描述符200打开文件。它确实是在子shell之前处理的。然后子shell将继承该文件描述符。
子shell没有内在的并发性。你可能在想
a | b | c
,在哪里
a
b
,和
c
是同时运行的所有命令。每一个都在子shell中运行(如果它们是外部命令,则通常是子进程本身,但即使shell内置也在子shell中执行),这是管道的一个实现细节。
详细说明一下,
-
(...)
具有输出重定向。
-
它打开了
/var/lock/.myscript.exclusivelock
在文件描述符200上处于写入模式。
-
它执行subshell,它继承所有打开的文件描述符,包括200个。
-
flock
,它从继承所有打开的文件描述符
它的
家长,地下室。它在文件描述符200上执行它的操作,正如它的参数所要求的那样。
-
一旦子shell退出,由它的重定向操作符之一打开的任何文件都将被shell关闭。