我写了一个简单的脚本echo-es 它的 PID:
#/bin/bash
while true; do
echo $$;
sleep 0.5;
done
Run Code Online (Sandbox Code Playgroud)
我3844在一个终端中运行上述脚本(一遍又一遍),并尝试在另一个终端中运行tail文件描述符:
$ tail -f /proc/3844/fd/1
Run Code Online (Sandbox Code Playgroud)
它不会在屏幕上打印任何内容并挂起直到^c. 为什么?
此外,所有 STD 文件描述符 (IN/OUT/ERR) 都链接到相同的 pts:
$ ls -l /proc/3844/fd/
total 0
lrwx------ 1 mg mg 64 sie 29 13:42 0 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 1 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 2 -> /dev/pts/14
lr-x------ 1 mg mg 64 sie 29 13:42 …Run Code Online (Sandbox Code Playgroud)