999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux系統(tǒng)下的文件與時間編程

2013-03-28 03:05:45山東師范大學(xué)丁德文
電子世界 2013年1期
關(guān)鍵詞:功能系統(tǒng)

山東師范大學(xué) 丁德文

1.文件編程

Linux中文件編程可以使用兩種方法:Linux系統(tǒng)調(diào)用以及C語言庫函數(shù),這兩者的區(qū)別在于前者依賴于linux系統(tǒng),后者與操作系統(tǒng)是獨立的,在任何操作系統(tǒng)下,使用C語言庫函數(shù)操作文件的方法都是相同的。

1.1 系統(tǒng)調(diào)用-創(chuàng)建文件

int creat(const char *filename,mode_t mode)

filename:要創(chuàng)建的文件名(包含路徑,缺省為當(dāng)前路徑)。

mode:創(chuàng)建模式。

常見的創(chuàng)建模式有:

S_IRUSR 可讀

S_IWUSR 可寫

S_IXUSR 可執(zhí)行

S_IRWXR 可讀.`寫`執(zhí)行

除了可以使用上述宏以外,還可以直接使用數(shù)字來表示文件的訪問權(quán)限:

無任何權(quán)限–>0

可執(zhí)行–>1

可寫–>2

可讀–>4

上述屬性的和,如可寫可讀–>6

若一個文件的屬性是7,則表示此文件的屬性為可讀可寫可執(zhí)行。

1.2 文件描述

在linux系統(tǒng)中,所有打開的文件都對應(yīng)一個文件描述符。文件描述符的本質(zhì)是一個非負(fù)整數(shù)。當(dāng)打開一個文件時,該整數(shù)由系統(tǒng)來分配。文件描述符的范圍是0-OPEN_MAX。早期的UNIX版本OPEN_MAX=19,即允許每個進程同時打開20個文件,現(xiàn)在很多系統(tǒng)則將其增加至1024。

系統(tǒng)調(diào)用-打開文件

int open(const char *pathname,int flags)

int open(const char *pathname,int flags,mode_t mode)

pathname:要打開的文件名(包含路徑,缺省為當(dāng)前路徑)。

flags:打開標(biāo)志。常見的打開標(biāo)志有:

O_RDONLY只讀方式打開;O_WRLY只寫方式打開;O_RDWR寫方式打開;O_APPEND追加方式打開;O_CREAT創(chuàng)建一個文件;O_NOBLOCK非阻塞方式打開。

1.3 系統(tǒng)調(diào)用-關(guān)閉文件

當(dāng)完成操作文件以后,需要關(guān)閉文件:

int close(int fd)

fd:文件描述符。

1.4 系統(tǒng)調(diào)用-讀文件

int read(int fd,const void *buf,size_t length)

功能:從文件描述符fd所指定的文件中讀取length個字節(jié)到buf所指向的緩沖區(qū)中,返回值為實際讀取的字節(jié)數(shù)。

1.5 系統(tǒng)調(diào)用-定位文件

whence可使用下述值:

SEEK_SET:相對文件開頭。

SEEK_CUR:相對文件讀寫指針的當(dāng)前位置。

SEEK_END:相對文件末尾。

Offset可取負(fù)值,表示向前移動。例如下述調(diào)用可將文件指針相對當(dāng)前位置向前移動5個字節(jié):Iseek(fd,-5,SEEK_CUR)int lseek(int fd,offset_t offset,int whence)

功能:將文件讀寫指針相對whence移動offset個字節(jié)。操作成功時,返回文件指針相對于文件頭的位置。

由于lseek函數(shù)的返回值為文件指針相對于文件頭的位置,因此下面調(diào)用的返回值就是文件的長度:

Lseek(fd,0,SEEK_END)

當(dāng)判斷文件是否可以進行某種操作(讀,寫等),這時可以使用access函數(shù):

int access(const char *pathname,int mode)pathname::文件名稱mode:要判斷的訪問權(quán)限??梢匀∫韵轮祷蛘呤撬麄兊慕M合。R_OK:文件可讀;W_OK:文件可寫;X_OK:文件可執(zhí)行;F_OK:文件存在。

返回值:當(dāng)我們測試成功時,函數(shù)返回0,否則如果一個條件不符時,返回-1。

2.庫函數(shù)

C庫函數(shù)的文件操作是獨立于具體的操作系統(tǒng)平臺的,不管是在DOS、Windows、Linux還是在VxWorks中都是這些函數(shù)。

庫函數(shù)——創(chuàng)建和打開:

FILE *fopen(const char *filename,const char *mode)

Filename:打開的文件名(包含路徑,缺省為當(dāng)前路徑)。

Mode:打開模式。常見的打開模式有:r,rb只讀方式打開;w,wb只寫方式打開,如果文件不存在,則創(chuàng)建文件;a,ab追加方式打開,如果文件不存在,則創(chuàng)建文件;w,w+b,wh+讀寫方式打開,如果文件不存在,則創(chuàng)建文件;a+,a+b,ab+讀和追加方式打開,如果文件不存在,則創(chuàng)建該文件。b用于區(qū)分二進制文件和文本文件,這一點在DOS。Windows系統(tǒng)中是有區(qū)分的,但Linux不區(qū)分二進制文件和文本文件。

size_t fread(void *ptr,size_t size,size_t n,FLIE *stream)

功能:從stream指向的文件中讀取n個字段,每個字段為size字節(jié),并將讀取的數(shù)據(jù)放入ptr所指的字符數(shù)組中,返回實際已讀取的字節(jié)數(shù)。

size_t fwrite(const void *ptr,size_t size,size_t n,FLIE *stream)

功能:從緩沖區(qū)ptr所指的數(shù)組中把n個字段寫到stream指向的文件中,每個字段長為size個字節(jié),返回實際寫入的字段數(shù)。

int fseek(FILE *stream,long offset,int whence)

whence:SEEK_SET從文件的開始出開始搜索;SEEK_CUR從當(dāng)前位置開始搜索;SEEK_END從文件的結(jié)束處開始搜索。

在編寫程序的時候,有時會需要得到當(dāng)前路徑。C庫函數(shù)提供了getcwd來解決這個問題。

char *getcwd(char *buffer,size_t size)

提供一個size大小的buffer,getcwd,會把當(dāng)前的路徑名copy到buffer中,如果buffer太小,函數(shù)會返回-1。

創(chuàng)建目錄

#include

int mkdir(char *dir,int mode)

功能:創(chuàng)建一個新目錄。

返回值:0表示成功,-1表示出錯。

3.時間編程

在linux編程時我們經(jīng)常用到輸出系統(tǒng)當(dāng)前的時間,計算程序執(zhí)行的時間和延時執(zhí)行等,比如對算法進行時間分析。

時間類型:

Coordinated Universal Time(UTC):世界標(biāo)準(zhǔn)時間,也就是格林威治標(biāo)準(zhǔn)時間(Greenwich Mean Time,GMT)。

Calendar Time:日歷時間,是用“從一個標(biāo)準(zhǔn)時間點(如:1970年1月1日0點)到此時經(jīng)過的秒數(shù)”來表示的時間。

時間獲取:

Time_t time(time_t *tloc)

功能:獲取日歷時間,即從1970年1月1日0點到現(xiàn)在所經(jīng)歷的秒數(shù)。

時間轉(zhuǎn)化struct tm *gmtime(const time_t *timep)

功能:將日歷時間轉(zhuǎn)化為格林威治標(biāo)準(zhǔn)時間,并保持至TM結(jié)構(gòu)。

struct tm *localtime(const time_t*timep)

功能:將日歷時間轉(zhuǎn)化為本地時間,并保存至TM結(jié)構(gòu)。

時間顯示

char *asctime(const struct tm*tm)

功能:將tm格式的時間轉(zhuǎn)化為字符串,如:Sat Jul 30 07:42:06 2012 char*ctime(const time_t *timep)

功能:將日歷時間轉(zhuǎn)化為本地時間的字符串形式。

時間獲取:

int gettimeofday(struct timeval*tv,struct timezone *tz)

功能:獲取從今日凌晨到現(xiàn)在的時間差,常用于計算事件耗時。

延時執(zhí)行:

unsigned int sleep(unsignen int seconds)

功能:使程序睡眠seconds秒。

void usleep(unsigned long usec)

功能:使程序睡眠usec微妙。

4.總結(jié)

本文介紹了linux下文件編程與時間編程,主要介紹了文件的創(chuàng)建于打開,文件的讀寫操作,以及時間的獲取與轉(zhuǎn)化等。本文從概念上對linux下的文件編程以及時間編程做了系統(tǒng)的闡述,需要做的工作還需要進一步改進。

[1]Mark GSobell.Apractical guide to Linux[M].Addison-Wesley Pub Co,1997.

[2]Eberhardt Rechtin.Systems architecting:Creating and building complex systems[M].Prentice Hall,1991.

[3]Andrew G Morgan.The Linux-PAM system administrators'guide[M].Linux Documentation Project,2002.

[4]John Paul Wallington.The GNU bash reference manual M].Free Software Foundation,2002.

猜你喜歡
功能系統(tǒng)
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關(guān)于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達(dá)功能
主站蜘蛛池模板: 99视频免费观看| 久久女人网| 国产午夜精品鲁丝片| 国产白浆在线观看| 日本欧美一二三区色视频| 熟妇丰满人妻| 高清不卡毛片| 欧美精品亚洲日韩a| 漂亮人妻被中出中文字幕久久 | 日韩国产另类| 精品国产一区91在线| 久久精品中文字幕少妇| 日本午夜三级| 欧美成人国产| 狠狠色婷婷丁香综合久久韩国| 中国一级毛片免费观看| 亚洲精品综合一二三区在线| 国产欧美日韩资源在线观看| 国产人在线成免费视频| 丁香六月激情综合| 亚洲成人在线网| 玖玖精品视频在线观看| 色有码无码视频| 亚洲第一区精品日韩在线播放| 国产91全国探花系列在线播放| 91视频免费观看网站| 亚洲第一福利视频导航| 亚洲第一中文字幕| 国产日韩欧美在线视频免费观看| 欧美成在线视频| 91在线视频福利| 天天干天天色综合网| 在线免费观看a视频| 熟妇人妻无乱码中文字幕真矢织江| 亚洲欧美日韩天堂| 中文字幕欧美日韩| 午夜福利在线观看成人| 亚洲综合一区国产精品| 中文字幕丝袜一区二区| 强奷白丝美女在线观看| AV不卡无码免费一区二区三区| 亚洲AV无码久久天堂| 亚洲国产第一区二区香蕉| 在线观看国产黄色| 最新国产你懂的在线网址| 中文字幕有乳无码| 熟女日韩精品2区| www.国产福利| 国产麻豆精品在线观看| 91激情视频| 国产精品欧美激情| 日本色综合网| jizz亚洲高清在线观看| 97在线观看视频免费| 精品福利视频网| 亚洲三级视频在线观看| 精久久久久无码区中文字幕| 超清无码一区二区三区| 91无码视频在线观看| 久久天天躁狠狠躁夜夜躁| 日韩欧美一区在线观看| 人人妻人人澡人人爽欧美一区 | 国产一区二区色淫影院| 亚洲精品天堂自在久久77| 久久熟女AV| 精品一区二区三区自慰喷水| 欧美精品高清| 国产丝袜一区二区三区视频免下载| 91美女视频在线观看| 亚洲成网777777国产精品| 亚洲天堂网在线视频| 99国产精品一区二区| 久久女人网| 精品国产乱码久久久久久一区二区| 999福利激情视频| 国产aⅴ无码专区亚洲av综合网| 亚洲美女一区| 国产大片黄在线观看| 久久99国产精品成人欧美| 99视频在线看| 久热精品免费| 欧美成人区|