Linuxc高階程式設計之檔案系統大作業

2021-08-20 03:50:22 字數 2206 閱讀 4745

假設乙個學生的資訊包括姓名,學號,性別,年齡,班級,籍貫六項資訊,編寫乙個簡單的學生管理系統:

源**:

#include

#include

#include

#include

#include

#include

#include

#define malloc (stu*)malloc(sizeof(stu))

static int num = 0;

typedef structstu;

//新增學生資訊

stu *stu_add(stu *p)

//查詢學生資訊

void stu_search(stu *p)

i++; }

if(i >= num)

} //刪除學生資訊

stu *stu_del(stu *p)

num--;

count = 1;

printf("找到並刪除該學生資訊\n");

break; }

}if(count != 1)

return p; }

//修改學生資訊

stu *stu_change(stu *p)

} if(i < num)else }

//顯示學生資訊

void stu_show(stu *p)

else

printf("已經顯示全部資訊\n");}

} int main(int argc,char *argv)

int fd;

stu *stu;

stu *q = malloc;

fd = open("stu.txt",o_creat|o_rdwr,00777);

if(fd == -1)

lseek(fd,20*sizeof(stu),seek_cur);

write(fd,q,sizeof(stu));

lseek(fd,0,seek_set);

stu = (stu*)mmap(null,sizeof(stu)*20,prot_read|prot_write,map_shared,fd,0);

if(stu == map_failed)

close(fd);

fd = open("num.txt",o_rdwr|o_creat,00777);

if(fd == -1)

int i = read(fd,&num,sizeof(int));

if(i <= 0)

close(fd);

char choose;

while(1)

getchar();

printf("\n");

if(choose == '0')else }

fd = open("num.txt",o_rdwr);

if(fd == -1)

write(fd,&num,sizeof(int));

close(fd);

munmap(stu,sizeof(stu)*100);

return 0; }

所用函式

1.mmap()函式

功能mmap將乙個檔案或者其它物件對映進記憶體

檔案被對映到多個頁上

如果檔案的大小不是所有頁的大小之和,最後乙個頁不被使用的空間將會清零

標頭檔案#include

函式原型

void *mmap(void *start, size_t length, int prot, int flags, int fildes, off_t off);

返回值成功執行時,返回被對映區的指標

失敗時,mmap()返回map_failed

引數說明

start:對映區的開始位址

length:對映區的長度

prot:期望的記憶體保護標誌,不能與檔案的開啟模式衝突,取值型別如下(可通過or運算合理地組合在一起)

prot_exec //頁內容可以被執行

prot_read  //頁內容可以被讀取

prot_write //頁可以被寫入

prot_none  //頁不可訪問

flags:控制變化如何影響對映區

map_private:對映區的寫入不會影響到原檔案

map_shared:對映區變化對檔案有效

map_fixed:使用指定的對映起始位址

linuxc 高階程式設計之檔案操作4

題目要求 1.新建檔案,設定檔案許可權遮蔽字為0 2.建立該檔案的硬鏈結檔案,列印硬鏈結檔案的inode節點號和檔案大小 3.建立該檔案的軟鏈結檔案,列印軟鏈結檔案的inode節點號和檔案大小 列印軟鏈結檔案中的內容 4.列印原始檔的inode節點號,檔案大小和鏈結數目 5.呼叫unlink對原始檔...

linux程式設計之檔案系統

linux中的檔案系統有ext2 block ext2檔案系統組織檔案時是以block為單位組織的,磁碟上一般是以扇區為單位的,乙個扇區大小為512b,block是磁碟上的一塊區域,大小一般為8個扇區,為4k。inode表 inode表就是一塊區域記錄著檔案資訊inode結點的 inode節點 in...

Linuxc高階程式設計之程序1

1.列印當前所有環境變數的值 2.新增新的環境變數newenv first 3.修改環境變數newenv的值為second 4.列印環境變數newenv的值。源 include include include extern char environ int main int argc,char ar...