linux - lsof 没有为 bash 内置读取提供 o/p

标签 linux bash file-descriptor lsof

当我这样做的时候

find /

在一个终端上,然后在另一个终端上执行

lsof -a -d 0-2 -c fin

我看到执行 lsof 命令时列出了 o/p。

但是当我这样做时

echo hi ; read -t 30 hello
hi

在同一个终端上(与 find 一样)并执行(在不同的终端上)

lsof -a -d 0-2 -c read

我没有从 lsof 命令得到任何输出

为什么?是因为 read 是内置的 bash 吗?这里发生了什么?

最佳答案

你说得对。 “read”是 shell 内置的。进程名称仍为 sh(或 bash、zsh,或您选择的任何其他 shell)。

此外,虽然对于某些 shell 内置程序有二进制替代方案,但没有可供读取的替代方案。实际上是因为它的语法,它接受一个 shell 变量的名称,该变量被分配从标准输入读取的结果。如果它是外部程序,它永远无法在调用 shell 中设置变量。

关于linux - lsof 没有为 bash 内置读取提供 o/p,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398726/

相关文章:

linux - 在 Docker 容器中更新 apk 期间出现错误的文件描述符错误......为什么?

ruby-on-rails - 如何获得在 Ubuntu 中写入 gem 目录的权限?

bash - 在同一行 Bash 中回显多个变量

macos - Mac OS X Bash 获取/dev/diskNsM 大小

linux-kernel - 从 tun 设备读取()而不删除从操作系统缓冲区读取的数据

linux - 如何制作 crontab housekeep 脚本来删除 redhat 7 目录中超过 60 天的文件

javascript - Node.js - 服务器在启动时崩溃,手动启动时不会崩溃

arrays - bash $FUNCNAME 数组没有被清除

c - 在 fork() 之后寻求关于 'file descriptor' 的简单描述

java - FileDescriptor.sync() 线程安全