日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux系统编程:验证kernel内核缓存区大小-4096字节

發布時間:2025/3/15 linux 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux系统编程:验证kernel内核缓存区大小-4096字节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用的API

read/write函數 常常被稱為Unbuffered IO。指的是無用戶緩存區。但不保證不使用內核緩存區。我們可以用來驗證內核緩存區的大小是不是4096字節。這里我們還用一個系統函數 dup2 文件描述符重定向函數,來實現 從終端輸入 直接輸出到文件中。

驗證內核緩存區大小

思路很簡單,就是測試4096這個臨界點

首先往文件中寫4096個字節,查看數據是否寫入到磁盤文件,從終端讀入數據,緩存區4096數據是否寫到磁盤文件

代碼

#include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h>int main(void) {int fd = open("temp.txt",O_RDWR|O_CREAT|O_TRUNC,0664);char temp[1024]={0};dup2(fd,STDOUT_FILENO);//文件重定向后,往終端輸出的數據,會寫入的文件中//先寫4096B試試,看看能寫入磁盤不for(int i = 0; i < 4096;i++){printf("%c",48);}//kernel緩存區大小為4096!寫到4097字節,緩沖區溢出才會將緩沖區內容寫道磁盤文件,//緩存區繼續放數據while(1){//讀取終端數據read(STDIN_FILENO,temp,sizeof(temp));if(strncmp(temp,"exit",4)==0)break;printf("%s\n",temp);}close(fd);return 0; }

啟動程序查看文件數據

程序啟動,寫入4096字節,但是文件數據卻沒有


終端寫入數據并查看




退出程序及驗證結果

驗證結果,寫到4097個字節,內核緩存區要溢出了,才將緩沖區內容寫到磁盤中去,再將數據寫到內核緩存區,等待下一次緩存區滿或者文件關閉 才會將緩存區內容寫到磁盤



新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的Linux系统编程:验证kernel内核缓存区大小-4096字节的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。