最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入底層:c語言文件操作中read函數(shù)的原理

2022-08-26 00:08 作者:StepfenShawn  | 我要投稿

# 引言

我們都知道c語言是一門非常強大的語言,這得益于它對系統(tǒng)底層的完美封裝,因此用c語言讀取文件的效率非常高, 接下來我們來看看讀取文件最基本的函數(shù) -- read


# read函數(shù)的定義

我們來看一下read的定義吧:

ssize_t read(int fd,void *buf,size_t nbyte)


調(diào)用該函數(shù)就會從fd中讀取最多nbytes個字節(jié)到緩沖區(qū)buf中


# 分析

首先我們看到第一個參數(shù)fd是int類型的, 當(dāng)你打開文件時可以調(diào)用open函數(shù)返回值賦給fd:

int fd = open(文件地址)

read(fd, ...)


當(dāng)然我們也可以不打開文件, 我們使用STDIN_FILENO 可以建一個待讀寫的文件:

read(STDIN_FILENO, ...)


實際上, `fd`指的就是文件描述符, 那么問題來了, 什么是文件描述符呢?


# 文件描述符是什么?

我們可以把文件描述符理解成一個索引, 當(dāng)調(diào)用read函數(shù)的時候, 系統(tǒng)內(nèi)核會利用文件描述符(file descriptor)來訪問文件。 而打開現(xiàn)存文件或新建文件時,也就是說調(diào)用open函數(shù)后, 系統(tǒng)內(nèi)核會返回一個文件描述符。?


其實在操作系統(tǒng)內(nèi)部, 對文件進(jìn)行相關(guān)操作時,都可能會創(chuàng)建對應(yīng)的文件描述符,? 這不正正應(yīng)證了那句名言`Linux 中一切都是文件`


# 模擬vim編輯器的輸入模式

接下來我們就能用c語言read寫模擬vim的輸入模式了:

#include <stdio.h>

#include <unistd.h>



int main() {

 ? ?char c;

 ? ?while (read(STDIN_FILENO, &c, 1) == 1 && c != 'q');

 ? ?return 0;

}



這就是以上內(nèi)容了, 喜歡的話給個關(guān)注吧!!!

深入底層:c語言文件操作中read函數(shù)的原理的評論 (共 條)

分享到微博請遵守國家法律
章丘市| 三都| 北碚区| 芜湖县| 平利县| 张家口市| 灵山县| 慈溪市| 乳源| 闽清县| 息烽县| 扬州市| 白朗县| 黄梅县| 隆化县| 成武县| 上林县| 丽江市| 武鸣县| 昌都县| 绵阳市| 安远县| 娱乐| 宣化县| 集贤县| 建宁县| 聊城市| 桐庐县| 西安市| 阳山县| 浙江省| 余江县| 万宁市| 苍南县| 临桂县| 济宁市| 光泽县| 吴旗县| 南涧| 临海市| 宾川县|