c語言學習筆記十一

2021-06-09 14:11:49 字數 2842 閱讀 6888

檔案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 預處理選項...