例:將一個文件中的內(nèi)容寫到另外一個文件中。
執(zhí)行結(jié)果:
說明已經(jīng)成功將一個文件中的內(nèi)容寫到另外一個文件中。
off_t實際上是整型,fd是文件描述符,offset是讀寫位置的偏移量,whence是位置,它分為三種:SEEK_SET、SEEK_CUR、SEEK_END。
(1)獲取文件大小
(2)文件的拓展
例:從文件結(jié)尾向后拓展2000個字節(jié)。
執(zhí)行結(jié)果:
最后發(fā)現(xiàn)文件大小是2015個字節(jié),因為最后的寫操作向里面寫入了一個字節(jié)。
將拓展之后的文件稱為空洞文件。
(1)stat命令:查看文件的詳細信息
(2)stat函數(shù):
新創(chuàng)建的線程從start_rtn函數(shù)的地址開始運行,該函數(shù)只有一個無指針參數(shù)arg,如果需要向start_rtn函數(shù)傳遞的參數(shù)不止一個,那么需要把這些參數(shù)放到一個結(jié)構(gòu)中,然后把這個結(jié)構(gòu)的地址作為arg的參數(shù)傳入。新創(chuàng)建的線程從start_rtn函數(shù)的地址開始運行,該函數(shù)只有一個萬能指針參數(shù)arg,如果需要向start_rtn函數(shù)傳遞的參數(shù)不止一個,那么需要把這些參數(shù)放到一個結(jié)構(gòu)中,然后把這個結(jié)構(gòu)的地址作為arg的參數(shù)傳入。execprocedure(
其中st_mode是16位的變量:
相應(yīng)網(wǎng)絡(luò)掩碼為: ff:ff:ff:ff:ff:ff:ff:ff, 所以ipv6 的網(wǎng)絡(luò)匹配是真正的'host'方式的匹配(nt | rt | rc:地址的8個部分都會用到,是否不屬于網(wǎng)絡(luò)的字節(jié)填寫0, 需接下來補充), 但同時需要一個網(wǎng)絡(luò)掩碼長度參數(shù)來具體指定前面多少字節(jié)為網(wǎng)絡(luò)掩碼(nt: 可通過下面的net net/len 來指定)。注:033效果與022一樣,假設(shè)使用033掩碼進行設(shè)置linux命令大全,則真實權(quán)限應(yīng)為633即rw- r-x r-x ,但前提規(guī)定文件不生成x位,所以文件的權(quán)限最終將以rw-r--r--出現(xiàn)。'+'代表增加相應(yīng)權(quán)限,'-'代表減少相應(yīng)權(quán)限,'='代表僅設(shè)置對應(yīng)的權(quán)限'rwx'是權(quán)限的字符組合形式,也可以拆分使用 'nnn'為需要設(shè)置的具體權(quán)限值,如'770'、'644'等-r:將一個目錄中的所有子目錄及文件的權(quán)限都設(shè)置為相同的值。
(1)例:stat函數(shù)應(yīng)用:將文件的大小輸出出來。
執(zhí)行結(jié)果:
注:命令行參數(shù)中argv[0]是當(dāng)前可執(zhí)行文件的名字,所以我們要將argv[1]傳入stat函數(shù)。
如果傳入的參數(shù)是該文件的一個軟鏈接,那么stat函數(shù)仍然會去追蹤該文件,所以輸出的是該文件的大小,而不是軟鏈接文件的大小:
(2)lstat函數(shù)
如果把程序中的stat函數(shù)換成lstat函數(shù),那么上面的兩個實驗會分別輸出以下結(jié)果:
可以看到如果傳入的參數(shù)是該文件的一個軟鏈接,那么lstat函數(shù)不會去追蹤該文件,所以輸出的是軟鏈接文件的大小。
此外,這幾個命令也分為追蹤和不追蹤:
truncate函數(shù):文件的拓展
(1)unlink函數(shù)作用:刪除一個文件的目錄項并減少它的鏈接數(shù),若成功返回0,否則返回-1。如果想通過調(diào)用這個函數(shù)來成功刪除文件,就必須擁有這個文件的所屬目錄的寫和執(zhí)行權(quán)限。