熱搜:win11繞過硬件限制安裝 一鍵重裝Win10系統(tǒng) 最干凈的u盤啟動盤 真正純凈版的win7系統(tǒng)
時間:2014-12-26 15:58:35 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20141226/33535.html 手機查看 評論 反饋
代碼如下:
#include《unistd.h》 //《unistd.h》必須最早出現(xiàn),因為它可能會影響到其他頭文件。#include《stdio.h》
#include《fcntl.h》
#include《string.h》
#include《errno.h》
int main()
{
char* filename = “。//file”;
char buf[100];
char buf1[5];
int fd;
printf(“open a file to write\n”);
if((fd = open(filename,O_RDWR|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH ))==-1)
{
perror(“cannot open file\n”);
return 1;
}
printf(“open file successfully!\n”);
printf(“input a string:”);
gets(buf);
//write intofile
if(write(fd,buf,strlen(buf)) !=strlen(buf))
{
perror(“cannot write intofile\n”);
return 1;
}
close(fd);
printf(“open file to read.\n”);
if((fd=open(filename,O_RDONLY)) == -1)
{
perror(“cannot open thefile.\n”);
return 1;
}
if(lseek(fd,3,SEEK_SET) == -1)
{
perror(“lseek erroe\n”);
return 1;
}
//read from the file
if(read(fd,buf1,4)==-1)
{
perror(“read error.\n”);
return 1;
}
printf(“read from file is%s\n”,buf1);
close(fd);
return 0;
}
執(zhí)行與輸出結(jié)果:
代碼如下:
root@jb51:~$gcc -o io io.c
root@jb51:~$./io
open a file towrite
open filesuccessfully!
input a string:akxivbaslzkncxcasbxbwwvaidxbd
open file toread.
read from fileis ivba
linux 文件I/O教程(2)
下面介紹了linux中有關(guān)文件I/O的相關(guān)內(nèi)容,內(nèi)核使用三種數(shù)據(jù)結(jié)構(gòu)表示打開的文件,他們之間的關(guān)系決定了在文件共享方面一個進程對另一個進程可能產(chǎn)生的影響。
一,文件共享
內(nèi)核使用三種數(shù)據(jù)結(jié)構(gòu)表示打開的文件,他們之間的關(guān)系決定了在文件共享方面一個進程對另一個進程可能產(chǎn)生的影響。
1) 每個進程在進程表中都有一個記錄項,記錄項中包含一張打開文件描述表,可將其視為一個矢量,每個描述符占用一項。與每個文件描述符相關(guān)聯(lián)的是:
a) 文件描述符標志
b) 指向一個文件表項的指針
2) 內(nèi)核為所有打開文件維持一張文件表。每個文件表項包含:
a) 文件狀態(tài)標志(讀、寫、讀寫、添些、同步和阻塞等)
b) 當前文件偏移量
c) 指向文件v節(jié)點表項的指針
3) 每個打開文件(或設備)都有一個v節(jié)點(v-node)結(jié)構(gòu)。v節(jié)點包含了文件類型和對比文件進行各種操作的函數(shù)的指針。對于大多數(shù)文件,v節(jié)點還包含了該文件的i節(jié)點。i節(jié)點包含文件所有者、文件長度、文件所在的設備、指向文件實際數(shù)據(jù)塊在磁盤上所在位置的指針等。
打開文件的內(nèi)核數(shù)據(jù)結(jié)構(gòu)
如果兩個進程各自打開了同一個文件,則如圖2所示。假定第一個進程在文件描述符3打開上該文件,而另一個進程在文件描述符4上打開該文件。每個進程都得得到一個文件表項,但對一個給定的文件只有一個v節(jié)點表項。每個進程都有自己的文件表項的一個理由是:使每個進程都有自己對該問價的當前偏移量。
發(fā)表評論
共0條
評論就這些咯,讓大家也知道你的獨特見解
立即評論以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場