api 和 linux 中的设备文件有什么区别?
what is the difference between api and device files in linux?
从上面link我读到API就像一个描述做什么的规范,而driver是一个描述如何做的实现。
现在,我在 linux 中找不到 API 用于显示,音频 etc.I 也在网上看到 linux 提供设备文件与设备交互driver秒。我们可以通过写入或读取这些文件来与设备通信,但如上所述 API 是描述要做什么的规范,API 层丢失 here.so,我不知道是什么命令写入这些文件以与设备交互。 ex-rasterize 在这些设备文件的帮助下显示的图像。
设备文件只是用户space和内核之间进行通信的一种实用方式。一些设备文件(尤其是块设备)具有统一的 API,但这有点离题了。
对于大多数标准操作,您不会直接与设备文件交互,而是使用库,公开记录的 API,以执行您想要的操作。所以,如果你想播放声音文件,你会使用,例如,libjack
,甚至更高的抽象层,比如 gstreamer
或 libvlc
.
这些库有可能使用设备文件作为其实际输出。你不需要处理那个,除非你想。
在其他情况下,您确实希望打开设备文件并与之交互。在这些情况下,您需要阅读相关文档以了解如何操作。一些设备文件只接受 read
和 write
请求。其他设备,例如 tty
设备,具有 ioctl
修改其工作方式的命令。相关设备的手册页会告诉您需要了解的内容。
通常,许多人将设备文件视为内核 API 的扩展。事实上,很多调用ioctl
命令的"user defined syscalls"。在所有情况下,只需阅读文档以了解您需要做什么。
从上面link我读到API就像一个描述做什么的规范,而driver是一个描述如何做的实现。
现在,我在 linux 中找不到 API 用于显示,音频 etc.I 也在网上看到 linux 提供设备文件与设备交互driver秒。我们可以通过写入或读取这些文件来与设备通信,但如上所述 API 是描述要做什么的规范,API 层丢失 here.so,我不知道是什么命令写入这些文件以与设备交互。 ex-rasterize 在这些设备文件的帮助下显示的图像。
设备文件只是用户space和内核之间进行通信的一种实用方式。一些设备文件(尤其是块设备)具有统一的 API,但这有点离题了。
对于大多数标准操作,您不会直接与设备文件交互,而是使用库,公开记录的 API,以执行您想要的操作。所以,如果你想播放声音文件,你会使用,例如,libjack
,甚至更高的抽象层,比如 gstreamer
或 libvlc
.
这些库有可能使用设备文件作为其实际输出。你不需要处理那个,除非你想。
在其他情况下,您确实希望打开设备文件并与之交互。在这些情况下,您需要阅读相关文档以了解如何操作。一些设备文件只接受 read
和 write
请求。其他设备,例如 tty
设备,具有 ioctl
修改其工作方式的命令。相关设备的手册页会告诉您需要了解的内容。
通常,许多人将设备文件视为内核 API 的扩展。事实上,很多调用ioctl
命令的"user defined syscalls"。在所有情况下,只需阅读文档以了解您需要做什么。