linux - Linux中什么不是文件

标签 linux

当我第一次学习 Linux 时,我被告知几乎Linux 中的一切都是文件。今天早上,当我向我女朋友重复这句话时。她问什么不是?我找了半天的例子。

所以我的问题是 Linux 中什么不是文件?

最佳答案

差不多了。 Posix 中的几乎所有内容都是通过文件描述符来处理的。这意味着用于文件操作的相同函数也适用于管道、套接字和硬件设备。这也意味着,如果您使用 select (或其更好的替代方案之一),您可以在程序中设置一个点来等待所有可能的输入。

话虽如此,Posix 中的某些东西,特别是 Linux 中,绝对不是文件。

最明显的是信号。它们的处理与程序的执行异步,因此不能采用文件接口(interface)。为此,发明了 pselect 及其更好的替代方案之一。

与文件相比,更微妙的是线程同步结构(互斥体、信号量等)。人们已经做出了一些尝试,使它们也可以用作文件描述符(请参阅signalfdeventfd),但这些几乎没有流行起来。我认为这在很大程度上是因为它们的性能概况与通常的处理方式截然不同。

关于linux - Linux中什么不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39383041/

相关文章:

linux - Fedora 14 上的 Amazon AWS s3fs 挂载问题

linux one liner,显示匹配模式的文件名

linux - 如何使用纯qml linux获取系统,用户信息

linux - 用于 FS 在 x86 SMP 中启动的工作 linux 内核 + gem5 配置

c - 在 linux 中修改目标文件函数 xref 的优雅方式

c - 与 c 中的指针相关的问题

linux - 模拟用户输入以使用不同参数多次调用脚本

java - 在 Java 中列出打开的 TCP 连接

linux - recvfrom(2) 收到两次 UDP 广播,但 tcpdump(8) 只收到一次

linux - 如何理解 Linux 中的 diff -u?