您好,登錄后才能下訂單哦!
本篇文章為大家展示了Linux 文件IO的代碼怎么寫,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
Linux下的所有資源都被抽象為文件,所以對(duì)所有資源的訪問(wèn)都是以設(shè)備文件的形式訪問(wèn),設(shè)備文件的操作主要包括:打開、關(guān)閉、讀、寫、控制、修改屬性等。下面的示例代碼主要是對(duì)文本文件的拷貝。
其實(shí)對(duì)于一些復(fù)雜一點(diǎn)的設(shè)備,主要操作也是類似,比如攝像頭,在linux下也是一個(gè)設(shè)備文件,打開之后,可以讀取攝像頭的參數(shù),然后可以讀取圖像數(shù)據(jù),讀取到的圖像數(shù)據(jù)可以編碼后保存到文件中,這就是錄像的過(guò)程,也可以把讀到的圖像數(shù)據(jù)送到LCD顯示屏的幀緩存去顯示出來(lái)。
再比如串口的操作,在Linux下,對(duì)于串口通信,也是設(shè)備文件的讀寫操作:打開設(shè)備文件--->配置參數(shù)(波特率、停止位、校驗(yàn)位等)--->讀取/寫入數(shù)據(jù)。
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#define M 128
int
main(int argc, char **argv)
{
if(argc < 3){
printf("Usage:%s,<file1>,<file2>\n",argv[0]);
return -1;
}
int fd1,fd2;
char buf[M];
int count = -1;
memset(buf, '\0', M);
if((fd1 = open(argv[1],O_RDONLY)) == -1){
perror("open file1 error:");
return -1;
}
if((fd2 = open(argv[2],O_RDWR | O_CREAT,0644)) == -1){
perror("open file2 error:");
return -1;
}
while(count != 0){
if((count = read(fd1,buf,M)) == -1){
perror("read file1 error:");
return -1;
}
if((count = write(fd2,buf,count)) == -1){
perror("write error:");
return -1;
}
}
close(fd1);
close(fd2);
return 0;
}
$ gcc copy.c -o copy$ ./copy copy test
運(yùn)行結(jié)果:
$ lscopy copy.c test $ diff copy test $
運(yùn)行結(jié)果,程序?qū)ζ渥陨砜截惲艘环轂閠est的文件,用diff命令比較兩個(gè)文件,沒(méi)有差異,完全一樣,說(shuō)明拷貝成功了。
上述內(nèi)容就是Linux 文件IO的代碼怎么寫,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。