当我第一次学习Linux时,我被告知几乎 Linux中的所有内容都是文件。今天早上,我把它重复给了我的女朋友。她问什么不是?我试着找了半天的例子。
所以我的问题是Linux中的文件不是什么?
答案 0 :(得分:1)
几乎。 Posix中的几乎所有内容都是通过文件描述符处理的。这意味着用于文件操作的相同功能也适用于管道,套接字和硬件设备。这也意味着如果您使用select
(或其中一个更好的替代方案),您可以在程序中有一个等待所有可能输入的点。
话虽如此,Posix中的一些东西,尤其是Linux中的东西,绝对不是文件。
最明显的是信号。它们与程序的执行异步处理,因此无法接受文件接口。为此目的,pselect
和其中一个更好的替代品被发明了。
事情更巧妙地不是文件是线程同步构造(互斥体,信号量等)。已经进行了一些尝试以使这些可用作文件描述符(参见signalfd
和eventfd
),但那些很难被发现。我认为,这在很大程度上是因为他们的表现形式与处理它们的方式截然不同。
答案 1 :(得分:0)