檔案i/o
.data
msg : .string "hello, world!\n"
len = . - msg
.text
.global _start
_start:
movl $len, %edx
movl $msg, %ecx
movl $1 , %ebx
movl $4 , %eax
int $0x80
movl $0 , %ebx
movl $1 , %eax
int $0x80
c **:
#include
#define len 14
char msg[len]="hello, world!\n";
int main(void)
c標準i/o 庫函式
fopen() 呼叫open()開啟指定檔案,返回乙個檔案描述符,
fgetc() 通過傳入的file *找到該檔案的描述符,i/o緩衝區和當前讀寫位置
如果能從緩衝區讀到下乙個字元,則直接返回該字元,
否則呼叫read(),讓核心讀取資料到緩衝區
fputc() 如果i/o緩衝區有空間存放乙個字元,則直接儲存到緩衝區
否則呼叫write(),讓核心把緩衝區內容寫回檔案
fclose() 如果緩衝區還有資料沒有寫回,就呼叫write(),然後呼叫close()
關閉檔案,釋放file結構體和i/o緩衝區
unbuffered i/o函式
open:開啟/建立乙個檔案
示例**:
#include
#include
#include
/**返加檔案描述符,錯誤返回-1
*pathname 檔名(絕對/相對)
*flags 必選項:
* o_rdonly 唯讀
* o_wronly 只寫
* o_rdwr 可讀可寫 (多項用|分隔)
*mode: 指定檔案許可權
*/int open(const char * pathname,int flags);
int open(const char * pathname,int flags,mode_t mode);
檢視umask掩碼:umask 結果:0022
建立檔案: touch filename 0666 最終許可權 0666&~022=0644
gcc 0777 最終0777&~022=0755
檢視檔案許可權:ls -s filename
修改umask掩碼:umask 0
close 關閉開啟檔案
示例**:
#include
/*正常返回0,錯誤返回-1*/
int close(int f);
read:從開啟的檔案或裝置中讀取資料
示例**:
#include
/*讀取f檔案中的count個位元組到buf中*/
ssize_t read(int f,void * buf,size_t count);
write:向開啟的檔案中寫資料
示例**:
#include
ssize_t write(int f,const void * buf,size_t count);
示例**:從終端輸入/輸出
#include
#include
int main(void)
write(stdin_fileno,buf,x);
return 0;
}lseek: 移動到當前讀寫位置
示例**:
#include
#include
off_t lseek(int f,off_t offset,int whence);
fcntl:改變乙個已開啟檔案的屬性
示例**:
#include
#include
int fcntl(int f,int cmd);
int fcntl(int f,int cmd,long arg);
int fcntl(int f,int cmd,struct flock * lock);
ioctl: 用於向裝置發控制和配置命令
示例**:
#include
int ioctl(int d,int request);
示全**:
取得終端裝置的視窗大小
#include
#include
#include
#include
int main(void)
printf("%d rows, %d columns\n", size.ws_row, size.ws_col);
return 0;
}mmap:可以把磁碟檔案的一部分直接對映到記憶體
示例**:
#include
/**poart:
* prot_exec 一段可執行**,如共享庫
* prot_read 可讀
* prot_write 可寫
* prot_none 不可訪問
* map_shared 多個程序對同乙個檔案共享的,(同步)
* map_private 多個程序對同乙個檔案不共享
*/void *map(void * addr,size_t len,int prot,int flag,int filedes,off_t off);
int munmap(void *addr,size_t len);
c語言學習筆記十一
檔案i o data msg string hello,world n len msg text global start start movl len,edx movl msg,ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int...
c語言學習筆記十一
檔案i o data msg string hello,world n len msg text global start start movl len,edx movl msg,ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int...
c語言學習筆記二十一
makefile中關於變數的語法規則 示例 如下 foo bar bar huh?all echo foo 執行make後輸出 huh?優點 可以把變數的值推遲到後面定義 示例 main.o main.c cc cfags cppflags c cc gcc 編譯選項 cfags o g 預處理選項...