linux c是字符設(shè)備文件;字符設(shè)備是個(gè)能夠像字節(jié)流一樣被訪問(wèn)的設(shè)備,由字符設(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)這種特性;字符設(shè)備驅(qū)動(dòng)程序通常至少要實(shí)現(xiàn)open、close、read和write的系統(tǒng)調(diào)用。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
linux c是什么文件?
字符設(shè)備。
字符(char)設(shè)備是個(gè)能夠像字節(jié)流(類似文件)一樣被訪問(wèn)的設(shè)備,由字符設(shè)備驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)這種特性。字符設(shè)備驅(qū)動(dòng)程序通常至少要實(shí)現(xiàn)open、close、read和write的系統(tǒng)調(diào)用。
字符終端(/dev/console)和串口(/dev/ttyS0以及類似設(shè)備)就是兩個(gè)字符設(shè)備,它們能很好的說(shuō)明“流”這種抽象概念。
字符設(shè)備可以通過(guò)文件節(jié)點(diǎn)來(lái)訪問(wèn),比如/dev/tty1和/dev/lp0等。這些設(shè)備文件和普通文件之間的唯一差別在于對(duì)普通文件的訪問(wèn)可以前后移動(dòng)訪問(wèn)位置,而大多數(shù)字符設(shè)備是一個(gè)只能順序訪問(wèn)的數(shù)據(jù)通道。然而,也存在具有數(shù)據(jù)區(qū)特性的字符設(shè)備,訪問(wèn)它們時(shí)可前后移動(dòng)訪問(wèn)位置。例如framebuffer就是這樣的一個(gè)設(shè)備,app可以用mmap或lseek訪問(wèn)抓取的整個(gè)圖像。
在/dev下執(zhí)行l(wèi)s -l ,可以看到很多創(chuàng)建好的設(shè)備節(jié)點(diǎn):
字符設(shè)備文件(類型為c),設(shè)備文件是沒(méi)有文件大小的,取而代之的是兩個(gè)號(hào)碼:主設(shè)備號(hào)5 +次設(shè)備號(hào)1 。
Linux文件類型(b、c、d、l、s、-)
文件類型 | 說(shuō)明 |
---|---|
b | 塊設(shè)備,是一些提供系統(tǒng)存取數(shù)據(jù)的接口設(shè)備,例如硬盤。 |
c | 字符設(shè)備,是一些串行端口的接口設(shè)備,例如鍵盤、鼠標(biāo)、打印機(jī)、tty終端。 |
d | 目錄,類似于Windows的文件夾。 |
l | 鏈接文件,類似于Windows的快捷方式。 |
s | 套接字文件(socket),用于進(jìn)程之間的通信。 |
– | 文件,分純文本文件(ASCII)和二進(jìn)制文件(binary)。 |
命令 | 說(shuō)明 |
---|---|
file filename | 查看文件類型 |