不帶緩存的IO操作又稱底層IO操作。檔案底層I/O操作的系統調用主要用到5個函數:open()、close()、read()、write()、lseek()。這些函數的特點是不帶緩存,直接對檔案進行操作。 雖然不帶緩存的檔案IO操作程式不能移植到非POSIX标準的系統(如Windows系統)上去,但是在嵌入式程式設計、TCP/IP的Socekt套接字程式設計、多路IO操作程式設計等方面應用廣泛。是以,不帶緩存的檔案IO程式設計是Linux檔案操作程式設計的重點。

01.jpg (14.33 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
02.jpg (99.66 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
03.jpg (24.61 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
04.jpg (32.76 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
05.jpg (32.46 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
06.jpg (46.26 KB, 下載下傳次數: 0)
下載下傳附件 儲存到相冊 設為封面
7 天前 上傳
3. 使用執行個體 程式功能:設計一個程式,要求從一個源檔案src_file(如不存在則建立)中讀取倒數第二個10KB資料并複制到目标檔案dest_file。 程式說明: 程式代碼: #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #define BUFFER_SIZE 1024 #define SRC_FILE_NAME "src_file" #define DEST_FILE_NAME "dest_file" #define OFFSET 20480 int main() { int src_file, dest_file; unsigned char buff[BUFFER_SIZE]; int real_read_len; int flag=10; src_file = open(SRC_FILE_NAME, O_RDONLY); dest_file = open(DEST_FILE_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (src_file < 0 || dest_file < 0) { printf("Open file error\n"); exit(1); } lseek(src_file, -OFFSET, SEEK_END); while ((real_read_len = read(src_file, buff, sizeof(buff))) > 0||flag>0) { flag--; write(dest_file, buff, real_read_len); } close(dest_file); close(src_file); return 0; } 結果: # ./copy_file # ls –lh dest_file 本文轉載于唯C教育,【Linux基礎】不帶緩存的IO操作
http://www.weicedu.com/forum.php?mod=viewthread&tid=100&fromuid=4
(出處: http://www.weicedu.com/)