




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
P8文件屬性
Linux中的文件屬性如圖1.6如示。
可讀可寫可執(zhí)行
首先,Linux中文件的擁有者可以把文件的訪問(wèn)屬性設(shè)成3種不同的訪問(wèn)權(quán)限:
可讀(r)、可寫(w)和可執(zhí)行(x)。文件又有3個(gè)不同的用戶級(jí)別:文件擁有者(u)、
所屬的用戶組(g)和系統(tǒng)里的其他用戶(。)。
第一個(gè)字符顯示文件的類型。
■表示普通文件。
■“d”表示目錄文件。
■“1”表示鏈接文件。
■“c”表示字符設(shè)備。
■“b”表示塊設(shè)備。
■“p”表示命名管道,比如FIFO文件(FirstInFirstOut,先進(jìn)先出)。
■“f”表示堆棧文件,比如LIFO文件(LastInFirstOut,后進(jìn)先出)。
■“s”表示套接字。
第一個(gè)字符之后有三個(gè)三位字符組:
■第一個(gè)三位字符組表示文件擁有者(u)對(duì)該文件的權(quán)限。
■第二個(gè)三位字符組表示文件用戶組(g)對(duì)該文件的權(quán)限。
■第三個(gè)三位字符組表示系統(tǒng)其他用戶(。)對(duì)該文件的權(quán)限。
■若該用戶組對(duì)此沒(méi)有權(quán)限,一般顯示字符。
目錄權(quán)限和文件權(quán)限有一定的區(qū)別。對(duì)于目錄而言,I?代表允許列出該目錄下的
文件和子目錄,W代表允許生成和刪除該目錄下的文件,X代表允許訪問(wèn)該目錄
P14用戶切換(SU)
(1)作用。
變更為其他使用者的身份,主要用于將普通用戶身份轉(zhuǎn)變?yōu)槌?jí)用戶,而且需輸
入相應(yīng)用戶密碼。
(2)格式。
su[選項(xiàng)][使用者]
其中的使用者為要變更的對(duì)應(yīng)使用者。
(3)常見(jiàn)參數(shù)。主要選項(xiàng)參數(shù)如表2』su命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-1,--login為該使用者重新登錄,大部分環(huán)境變量(如HOME、SHELL和USER等)和
工作目錄都是以該使用者(USER)為主。若沒(méi)有指定USER,缺省情況是root
-m,-p執(zhí)行su時(shí)不改變環(huán)境變量
-c,-command變更賬號(hào)為USER的使用者,執(zhí)行指令(command)后再變回原來(lái)使用者
(4)使用示例。
[david@localhost~]$su-root
Password:
[root@localhost
示例通過(guò)su命令將普通用戶變更為root用戶,并使用選項(xiàng)攜帶root環(huán)境變量。
(5)使用說(shuō)明。
■在將普通用戶變更為root用戶時(shí)建議使用選項(xiàng),這樣可以將root的環(huán)境變量
和工作目錄同時(shí)帶入,否則在以后的使用中可能會(huì)由于環(huán)境變量的原因而出錯(cuò)。
■在轉(zhuǎn)變?yōu)閞oot權(quán)限后,提示符變?yōu)?。
P15用戶管理(useradd和passwd)
(1)作用。
①useradd:添加用戶賬號(hào)。
②passwd:更改對(duì)應(yīng)用戶的賬號(hào)密碼。
(2)格式。
①useradd:useradd[選項(xiàng)]用戶名。
②passwd:passwd[選項(xiàng)J[用戶名]。
其中的用戶名為修改賑號(hào)密碼的用戶,若不帶用戶名,缺省為更改當(dāng)前使用者的密碼。
(3)常用參數(shù)
①useradd主要選項(xiàng)參數(shù)如表2.3所示。uscradd命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-g指定用戶所屬的群組
-m自動(dòng)建立用戶的登入目錄
-n取消建立以用戶名稱為名的群組
②passwd:一般很少使用選項(xiàng)參數(shù)。
(4)使用實(shí)例。
(root0localhostuseradddavid
(root0localhostpasswddavid
Newpassword:(輸入密碼)
Retypenewpassword:(再輸入一次密碼,以確認(rèn)輸入的正確性)
passwd:allauthenticationtokensupdatedsuccessfully
[root@localhostsu-david
[david@localhost
[david@localhost~]$pwd(查看當(dāng)前目錄)
/home/david(該用戶的工作目錄)
實(shí)例中先添加了用戶名為david的用戶,接著又為該用戶設(shè)置了賬號(hào)密碼。
從su的命令可以看出,該用戶添加成功,其工作目錄為“/home/david”。
(5)使用說(shuō)明。
■在添加用戶時(shí)I這兩個(gè)命令是一起使用的,其中,useradd必須用root的權(quán)限。
而且useradd指令所建立的賬號(hào),實(shí)際上是保存在“/etc/passwd”文本文件中,
文件中每一行包含一個(gè)賬號(hào)信息。
■在缺省情況下,useradd所做的初始化操作包括在“/home”目錄下為對(duì)應(yīng)賬
號(hào)建立一個(gè)同名的主目錄,并且還為該用戶單獨(dú)建立一個(gè)與用戶名同名的組。
■adduser只是useradd的符號(hào)鏈接(關(guān)于符號(hào)鏈接的概念在本節(jié)后面會(huì)有介紹),
兩者是相同的。
■passwd還可用于普通用戶修改賬號(hào)密碼,Linux并不采用類似Windows的密
碼回顯(顯示為*號(hào)),所以輸入的這些字符用戶是看不見(jiàn)的。密碼最好包括
字母、數(shù)字和特殊符號(hào),并且設(shè)成6位以上。
P17系統(tǒng)管理命令(ps和kill)
(1)作用。
①ps:顯示當(dāng)前系統(tǒng)中由該用戶運(yùn)行的進(jìn)程列表。
②kill:輸出特定的信號(hào)給指定PID(進(jìn)程號(hào))的進(jìn)程,并根據(jù)該信號(hào)完成指定
的行為。其中可能的信號(hào)有進(jìn)程掛起、進(jìn)程等待、進(jìn)程終止等。
(2)格式。
①ps:ps[選項(xiàng)]。②kill:kill[選項(xiàng)]進(jìn)程號(hào)(PID)。
kill命令中的進(jìn)程號(hào)為信號(hào)輸出的指定進(jìn)程的進(jìn)程號(hào),當(dāng)選項(xiàng)是缺省時(shí)為輸出終
止信號(hào)給該進(jìn)程.
(3)常見(jiàn)參數(shù)。
①ps主要選項(xiàng)參數(shù)如表2.5所示。ps命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-ef查看所有進(jìn)程及其PID(進(jìn)程號(hào))、系統(tǒng)時(shí)間、命令詳細(xì)目錄、執(zhí)行者等
-aux除可顯示vf所有內(nèi)容外,還可顯示CPU及內(nèi)存占用率、進(jìn)程狀態(tài)
-w顯示加寬并且可以顯示較多的信息
②kill主要選項(xiàng)參數(shù)如表2.6所示。kill命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-S將指定信號(hào)發(fā)送給進(jìn)程
-P打印出進(jìn)程號(hào)(PID),但并不送出信號(hào)
-1列出所有可用的信號(hào)名稱
(4)使用實(shí)例。
[root@localhostroot]#ps-ef
UIDPIDPPIDCSTIMETTYTIMECMD
root1002005?00:00:05init
root2102005?00:00:00[keventd]
root3002005?00:00:00[ksoftirqd_CPU0]
400200500:00:00[ksoftirqd_CPUl]
root7421102005?00:00:00/usr/local/bin/ntpd-c/etc/ntp.
root2178721739017:16pts/100:00:00grepntp
[root@localhostroot]#kill-97421(殺死進(jìn)程)
〔root@localhostroot]#ps-ef|grepntp
root2178921739017:16pts/100:00:00grepntp
該實(shí)例中首先查看所有進(jìn)程,并終止進(jìn)程號(hào)為7421的ntp進(jìn)程,之后再次查看時(shí)
已經(jīng)沒(méi)有該進(jìn)程號(hào)的進(jìn)程。
(5)使用說(shuō)明。
■ps在使用中通??梢耘c其他一些命令結(jié)合起來(lái)使用,主要作用是提高效率。
■ps選項(xiàng)中的參數(shù)w可以寫多次,通常最多寫3次,它的含義為加寬3次,
這足以顯示很長(zhǎng)的命令行了。例如:ps-auxwwwo
P19文件系統(tǒng)掛載命令(mount)
(1)作用。
掛載文件系統(tǒng),它的使用權(quán)限是超級(jí)用戶或/etc/fstab中允許的使用者。正如1.2.1
節(jié)中所述,掛載是指在分區(qū)和目錄之間建立映射關(guān)系的過(guò)程,而掛載點(diǎn)是指掛載在文
件樹中的位置。使用mount命令可以把文件系統(tǒng)掛載到相應(yīng)的目錄下,并且由于Linux
中把設(shè)備都當(dāng)成文件一樣使用,因此,mount命令也可以掛載不同的設(shè)備。
通常,在Linux下“/mnt”目錄是專門用于掛載不同的文件系統(tǒng)的,它可以在該
目錄下新建不同的子目錄來(lái)掛載不同的設(shè)備文件系統(tǒng)。
(2)格式。
mount[選項(xiàng)][類型]設(shè)備文件名掛載點(diǎn)目錄
其中的類型是指設(shè)備文件的類型。
(3)常見(jiàn)參數(shù)
mount常見(jiàn)參數(shù)如表2.8所示。mount命令選項(xiàng)常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-a依照/etc/fstab的內(nèi)容裝裁所有相關(guān)的硬盤
-1列出當(dāng)前已掛載的設(shè)備、文件系統(tǒng)名稱和掛載點(diǎn)
-t類型將后面的設(shè)備以指定類型的文件格式裝載到掛載點(diǎn)上。常見(jiàn)的類型有前面介紹過(guò)
的幾種:vfat、ext3、ext2>iso9660、nfs等
-f通常用于除錯(cuò)。它會(huì)使mount不執(zhí)行實(shí)際掛上的動(dòng)作,而是模擬整個(gè)掛上的過(guò)程,通常會(huì)和
-V一起使用
(4)使用實(shí)例。
使用mount命令主要通過(guò)以下幾個(gè)步驟。
①確認(rèn)是否為L(zhǎng)inux可以識(shí)別的文件系統(tǒng),Linux可識(shí)別的文件系統(tǒng)只要是以下兒種。
■Windows95/98常用的FAT32文件系統(tǒng):vfat。
■WindowsNT/2000的文件系統(tǒng):ntfs。
■OS/2用的文件系統(tǒng):hpfso
■Linux用的文件系統(tǒng):ext2、ext3、nfs?
■CD-ROM光盤用的文件系統(tǒng):iso9660。
②確定設(shè)備的名稱,可通過(guò)使用命令"fdisk-1”查看。
③查找掛載點(diǎn)。
必須確定掛載點(diǎn)已經(jīng)存在,也就是在“/mnt”下的相應(yīng)子目錄已經(jīng)存在,一般建
議在“/mnt”下新建幾個(gè)如“/mnt/windows",“/mnt/usb”的子目錄,現(xiàn)在有些新版本
的Linux(如Fedora、Ubuntu、紅旗Linux、中軟Linux、MandrakeLinux)都可自動(dòng)
掛載文件系統(tǒng),RedHatLinux僅可自動(dòng)掛載光驅(qū)。
④掛載文件系統(tǒng)如下所示。
[root@locaohostmkdir-p/mnt/win/c
[root@locaohostmount-tvfat/dev/hdal/mnt/win/c
[root@localhostcd/mnt/win/c
24.s03e01.pdtv.xvid-sfm.rmvbDocumentsandSettingsProgramFiles
24.s03e02.pdtv.xvid-sfm.rmvbDownloadsRecycled
C盤是原先筆者Windows系統(tǒng)的啟動(dòng)盤??梢?jiàn),在掛載了C盤之后,可直接訪
問(wèn)Windows下的C盤的內(nèi)容。
⑤在使用完該設(shè)備文件后可使用命令umount將其卸載。
[root@localhostumount/mnt/win/c
[root@localhost-]#cd/mnt/win/c
[root@localhostIs/mnt/win/c
可見(jiàn),此時(shí)目錄“/mnt/win/c”下為空。Windows下的C盤已被成功卸載。
P21cd和Is
1.cd
(1)作用。
改變當(dāng)前工作目錄。
(2)格式。
cd[路徑]
其中的路徑為要改變的工作目錄,可為相對(duì)路徑或絕對(duì)路徑。
(3)使用實(shí)例。
(root@localhostcd/home/david/
[root0localhostdavid]#pwd
[root@localhostdavid]#/home/david/
該實(shí)例中變更工作目錄為“/home/david/",在后面的“pwd”(顯示當(dāng)前目錄)的結(jié)果中可
以看出。
(4)使用說(shuō)明。
■該命令將當(dāng)前目錄改變至指定路徑的目錄。若沒(méi)有指定路徑,則回到用戶的
主目錄(例如:”/home/david”為用戶david的主目錄)。為了改變到指定目
錄,用戶必須擁有對(duì)指定目錄的執(zhí)行和讀權(quán)限。
■該命令可以使用通配符。
■使用“cd可以回到前次工作目錄。
■代表當(dāng)前目錄,代表上級(jí)目錄。
2.Is
(1)作用
列出目錄和文件的信息。
(2)格式。
1s[選項(xiàng)][文件]
其中文件選項(xiàng)為指定查看指定文件的相關(guān)內(nèi)容,若未指定文件,默認(rèn)查看當(dāng)前目
錄下的所有文件。
(3)常見(jiàn)參數(shù)。
1s主要選項(xiàng)參數(shù)見(jiàn)表2.9所示。1s命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-1?-format=single-column一行輸出一個(gè)文件(單列輸出)
-a,-all列出目錄中所有文件,包括以開頭的隱藏文件
-d將目錄名和其他文件一樣列出,而不是列出目錄的內(nèi)容
-l,-fbrmat=long,除每個(gè)文件名外,增加顯示文件類型、權(quán)限、硬鏈接數(shù)、所有者名、
-fbrmat=verbose組名、大?。˙yte)及時(shí)間信息(如未指明是其他時(shí)間即指修改時(shí)間)
-f不排序目錄內(nèi)容,按它們?cè)诖疟P上存儲(chǔ)的順序列出
(4)使用實(shí)例。
[david@localhosttest]$Is-1
total220
drwxr-xr-x2rootroot4096Mar312005bin
drwxr-xr-x3rootroot4096Apr32005boot
-rw-r——r——1rootroot0Apr242002test.run
該實(shí)例查看當(dāng)前目錄下的所有文件,并通過(guò)選項(xiàng)“-1”顯示出詳細(xì)信息。
顯示格式說(shuō)明如下。
文件類型與權(quán)限鏈接數(shù)文件屬主文件屬組文件大小修改的時(shí)間名字
(5)使用說(shuō)明。
■在1s的常見(jiàn)參數(shù)中,-1(長(zhǎng)文件名顯示格式)的選項(xiàng)是最為常見(jiàn)的??梢栽?/p>
細(xì)顯示出各種信息。
■若想顯示出所有開頭的隱藏文件,可以使用-a,這在嵌入式開發(fā)中很常用。
P23cat
(1)作用。
連接并顯示指定的一個(gè)或多個(gè)文件的有關(guān)信息。
(2)格式。
cat[選項(xiàng)]文件1文件2“?
其中的文件1、文件2為要顯示的多個(gè)文件。
(3)常見(jiàn)參數(shù)。
cat命令的常見(jiàn)參數(shù)如表2.11所示。cat命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-n由第一行開始對(duì)所有輸出的行數(shù)編號(hào)
-b和-n相似,只不過(guò)對(duì)于空白行不編號(hào)
(4)使用實(shí)例。
(david@localhost~]$cat-nhellol.chello2.c
1#include<stdio.h>
2voidmain()
3(
4printf("Hello!Thisismyhome!\nH);
5}
6#include<stdio.h>
7voidmain()
8(
9printf(*'Hello!Thisisyourhome!\nn);
10)
在該實(shí)例中,指定對(duì)hellol.c和hello2.c進(jìn)行輸出,并指定行號(hào)。
P24cp、mv和rm
(1)作用。
①cp:將給出的文件或目錄復(fù)制到另一文件或目錄中。
②mv:為文件或目錄改名或?qū)⑽募梢粋€(gè)目錄移入另一個(gè)目錄中。
③rm:刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄。
(2)格式。
①cp:cp[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄
②mv:mv[選項(xiàng)]源文件或目錄目標(biāo)文件或目錄
③nn:rm[選項(xiàng)]文件或目錄
(3)常見(jiàn)參數(shù)。
①cp主要選項(xiàng)參數(shù)如表2.12所示。cp命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-a保留鏈接、文件屬性,并復(fù)制其子目錄,其作用等于dpr選項(xiàng)的組合
-d復(fù)制時(shí)保留鏈接
-f刪除已經(jīng)存在的S標(biāo)文件而不提示
-i在覆蓋目標(biāo)文件之前將給出提示要求用戶確認(rèn)。回答y時(shí)目標(biāo)文件將被覆蓋,而且是交互式復(fù)制
-P此時(shí)cp除復(fù)制源文件的內(nèi)容外,還將把其修改時(shí)間和訪問(wèn)權(quán)限也復(fù)制到新文件中
-r若給出的源文件是?個(gè)目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下所有的子目錄和文件。此時(shí)目標(biāo)文件
必須為一個(gè)目錄名
②mv主要選項(xiàng)參數(shù)如表2.13所示。mv命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-i若mv操作將導(dǎo)致對(duì)已存在的目標(biāo)文件的覆蓋,此時(shí)系統(tǒng)詢問(wèn)是否重寫,并要求用戶回答y或n,
這樣可以避免誤覆蓋文件
-f禁止交互操作。在mv操作要覆蓋某已有的目標(biāo)文件時(shí)不給任何指示,在指定此選項(xiàng)后,
i選項(xiàng)將不再起作用
③rm主要選項(xiàng)參數(shù)如表2.14所示。nn命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-i進(jìn)行交互式刪除
-f忽略不存在的文件,但從不給出提示
-r指示rm將參數(shù)中列出的全部目錄和子目錄均遞歸地刪除
(4)使用實(shí)例。
①卬
(root@wwwhello]#cp-a./my/why/./
(root@wwwhello]#Is
mywhy
該實(shí)例使用-a選項(xiàng)將“/my/why”目錄下的所有文件復(fù)制到當(dāng)前目錄下。而此時(shí)
在原先目錄下還有原有的文件。
②mv
[root@wwwhello]#mv-i./my/why/./
[rootQwwwhello]#Is
mywhy
該實(shí)例中把,,/my/why”目錄下的所有文件移至當(dāng)前目錄,則原目錄下文件被自動(dòng)刪除。
③rm
[root@wwwhello]#rm-r-i./why
rm:descendintodirectory*./why*?y
rm:remove*./why/my.c*?y
rm:removedirectory*./why*?y
該實(shí)例使用“-r”選項(xiàng)刪除“./why”目錄下所有內(nèi)容,系統(tǒng)會(huì)進(jìn)行確認(rèn)是否刪除。
(5)使用說(shuō)明。
①卬:該命令把指定的源文件復(fù)制到目標(biāo)文件,或把多個(gè)源文件復(fù)制到目標(biāo)目錄中。
②mv
■該命令根據(jù)命令中第二個(gè)參數(shù)類型的不同(是目標(biāo)文件還是目標(biāo)目錄)來(lái)判
斷是重命名還是移動(dòng)文件,當(dāng)?shù)诙€(gè)參數(shù)類型是文件時(shí),mv命令完成文件
重命名,此時(shí),它將所給的源文件或目錄重命名為給定的目標(biāo)文件名;
■當(dāng)?shù)诙€(gè)參數(shù)是已存在的目錄名稱時(shí),mv命令將各參數(shù)指定的源文件均移
至目標(biāo)目錄中;
■在跨文件系統(tǒng)移動(dòng)文件時(shí),mv先復(fù)制,再將原有文件刪除,而連至該文件
的鏈接也將丟失。
③rm
■如果沒(méi)有使用-r選項(xiàng),則rm不會(huì)刪除目錄:
■使用該命令時(shí)一旦文件被刪除,它是不能被恢復(fù)的,所以最好使用-i參數(shù)。
P27chmod
7.chmod
(1)作用。
改變文件的訪問(wèn)權(quán)限。
(2)格式。
chmod可使用符號(hào)標(biāo)記進(jìn)行更改和八進(jìn)制數(shù)指定更改兩種方式,因此它的格式也
有兩種不同的形式。
①符號(hào)標(biāo)記:chmod[選項(xiàng)]…符號(hào)權(quán)限[符號(hào)權(quán)限]…文件
其中的符號(hào)權(quán)限可以指定為多個(gè),也就是說(shuō),可以指定多個(gè)用戶級(jí)別的權(quán)限,但
它們中間要用逗號(hào)分開表示,若沒(méi)有顯式指出則表示不作更改。
②八進(jìn)制數(shù):chmod[選項(xiàng)]…八進(jìn)制權(quán)限文件…
其中的八進(jìn)制權(quán)限是指要更改后的文件權(quán)限。
(3)選項(xiàng)參數(shù)。
chmod主要選項(xiàng)參數(shù)如表2.16所示。表2.16chmod命令常見(jiàn)參數(shù)列表
選項(xiàng)參數(shù)含義
-C若該文件權(quán)限確實(shí)已經(jīng)更改,才顯示其更改動(dòng)作
-f若該文件權(quán)限無(wú)法被更改也不要顯示錯(cuò)誤信息
-V顯示權(quán)限變更的詳細(xì)資料
(4)使用實(shí)例。
chmod涉及文件的訪問(wèn)權(quán)限,在此對(duì)相關(guān)的概念進(jìn)行簡(jiǎn)單的回顧。
在1.3.1節(jié)中已經(jīng)提到,文件的訪問(wèn)權(quán)限可表示成:-rwxrwxrwx。在此設(shè)有3
種不同的訪問(wèn)權(quán)限:讀(r)、寫(w)和運(yùn)行(x)。3個(gè)不同的用戶級(jí)別:文件擁有者
(u)、所屬的用戶組(g)和系統(tǒng)里的其他用戶(o)。在此,可增加一個(gè)用戶級(jí)別a(all)
來(lái)表示所有這3個(gè)不同的用戶級(jí)別。
①第一種符號(hào)連接方式的chmod命令中,用加號(hào)“+”代表增加權(quán)限,用減號(hào)“-”
代表刪除權(quán)限,等于號(hào)“=”代表設(shè)置權(quán)限。
例如,原先筆者系統(tǒng)中有文件uClinux20031103.tgz,其權(quán)限如下所示。
[root@localhosttest]#Is-1
-rw-r-r-1rootroot79708616Mar242005
uClinux20031103.tgz
[root0localhosttest]#chmoda+rxzu+wuClinux20031103.tgz
[root@localhosttest]#Is-1
-rwxr-xr-x1rootroot79708616Mar242005
uClinux20031103.tgz
可見(jiàn),在執(zhí)行了chmod之后,文件擁有者除擁有所有用戶都有的可讀和執(zhí)行的權(quán)
限外,還有可寫的權(quán)限。
②對(duì)于第二種八進(jìn)制數(shù)指定的方式,將文件權(quán)限字符代表的有效位設(shè)為“1”,
即“rw-”“rw-”和“…”的八進(jìn)制表示為“110”、“110”、“100”,把這個(gè)二進(jìn)制串
轉(zhuǎn)換成對(duì)應(yīng)的八進(jìn)制數(shù)就是6、6、4,也就是說(shuō)該文件的權(quán)限為664(三位八進(jìn)制數(shù))。
這樣對(duì)于轉(zhuǎn)化后八進(jìn)制數(shù)、二進(jìn)制及對(duì)應(yīng)權(quán)限的關(guān)系如表2.17所示。
表2.17轉(zhuǎn)化后八進(jìn)制數(shù)、二進(jìn)制及對(duì)應(yīng)權(quán)限的關(guān)系
轉(zhuǎn)換后八進(jìn)制數(shù)-進(jìn)制對(duì)應(yīng)權(quán)限轉(zhuǎn)換后八進(jìn)制數(shù)二進(jìn)制對(duì)應(yīng)權(quán)限
0000沒(méi)有任何權(quán)限1001只能執(zhí)行
2010只寫3011只寫和執(zhí)行
4100只讀5101只讀和執(zhí)行
6110讀和寫7111讀、寫和執(zhí)行
同上例,原先筆者系統(tǒng)中有文件genromfs-0.5.1.tar.gz,其權(quán)限如下所示。
[root@localhosttest]#Is-1
-rw-rw-r——1daviddavid20543Dec292004
genromfs-0.5.1.tar.gz
[root0localhosttest]#chmod765genromfs-0.5.1.tar.gz
[root@localhosttest]#Is-1
-rwxrw-r-x1daviddavid20543Dec292004
genromfs-0.5.1.tar.gz
可見(jiàn),在執(zhí)行了chmod765之后,該文件的擁有者權(quán)限、文件組權(quán)限和其他用戶
權(quán)限都恰當(dāng)?shù)貙?duì)應(yīng)了。
(5)使用說(shuō)明
■使用chmod必須具有root權(quán)限。
P31In
(1)作用。
為某一個(gè)文件在另外一個(gè)位置建立一個(gè)符號(hào)鏈接。當(dāng)需要在不同的目錄用到相同
的文件時(shí),Linux允許用戶不用在每一個(gè)需要的目錄下都存放一個(gè)相同的文件,而只
需將其他目錄下的文件用In命令鏈接即可,這樣就不必重復(fù)地占用磁盤空間。
(2)格式。
In[選項(xiàng)]目標(biāo)目錄
(3)常見(jiàn)參數(shù)。
■-s建立符號(hào)鏈接(這也是通常惟一使用的參數(shù))。
(4)使用實(shí)例。
[root@localhosttest]#In-s../genromfs-0.5.1.tar.gz./hello
[root@localhosttest]#Is-1
total77948
Irwxrwxrwx1rootroot24Jan1400:25hello
->../genromfs-0.5.1.tar.gz
該實(shí)例建立了當(dāng)前目錄的hello文件與上級(jí)目錄之間的符號(hào)鏈接,可以看見(jiàn),在
hello的Is-1中的第一位為“1”,表示符號(hào)鏈接,同時(shí)還顯示了鏈接的源文件。
(5)使用說(shuō)明。
■In命令會(huì)保持每??處鏈接文件的同步性,也就是說(shuō),不論改動(dòng)了哪一處,其
他的文件都會(huì)發(fā)生相同的變化。
■In的鏈接分軟鏈接和硬鏈接兩種。
軟鏈接就是上面所說(shuō)的In-s****,它只會(huì)在用戶選定的位置上生成一個(gè)文件的
鏡像,不會(huì)重復(fù)占用磁盤空間,平時(shí)使用較多的都是軟鏈接。
硬鏈接是不帶參數(shù)的In****,它會(huì)在用戶選定的位置上生成一個(gè)和源文件大小
相同的文件,無(wú)論是軟鏈接還是硬鏈接,文件都保持同步變化。
P34表2.25Linux常見(jiàn)類型的文件解壓命令一覽表
文件后綴解壓命令示例
atarxvtarxvhello.a
.ZUncompressuncompresshello.Z
gzGuiizipgunziphello.gz
.tar.ZtarxvZftarxvZfhello.tar.Z
.tar.gz.tgztarxvzftarxvzfhello.tar.gz
tar.bz2tarjxvftarjxvfhello.tar.bz2
安裝:rpm-i安裝:rpm-ihello.rpm
rpm
解壓縮:rpm2qjio解壓縮:rpm2qpiohello.rpm
安裝:dpkg-i安裝:dpkg-ihello.deb
deb(Debain中的文件格
式)解壓縮:dpkg-deb-fs^-tarfile解壓縮:dpkg-deb-fs^-tarhello
hello,deb
.zipUnzipunaphello.zip
P62函數(shù)靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)
在成功編譯之后,就進(jìn)入了鏈接階段。這里涉及一個(gè)重要的概念:函數(shù)庫(kù)。
讀者可以重新查看這個(gè)小程序,在這個(gè)程序中并沒(méi)有定義“printf”的函數(shù)實(shí)
現(xiàn),且在預(yù)編譯中包含進(jìn)的“stdio.h”中也只有該函數(shù)的聲明,而沒(méi)有定義函數(shù)的
實(shí)現(xiàn),那么,是在哪里實(shí)現(xiàn)"printf”函數(shù)的呢?最后的答案是:系統(tǒng)把這些函數(shù)
的實(shí)現(xiàn)都放到名為libc.so.6的庫(kù)文件中去了,在沒(méi)有特別指定時(shí),gcc會(huì)到系統(tǒng)默
認(rèn)的搜索路徑“/usr/lib”下進(jìn)行查找,也就是鏈接到libc.so.6函數(shù)庫(kù)中去,這樣就
能調(diào)用函數(shù)“printf”T,而這也正是鏈接的作用。
函數(shù)庫(kù)有靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)兩種。鄢態(tài)庫(kù)是指編譯鏈接時(shí),將庫(kù)文件的代碼全部加
入可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時(shí)也就不再需要庫(kù)文件了。其后
綴名通常為“.a”。動(dòng)態(tài)庫(kù)與之相反,在編譯鏈接時(shí)并沒(méi)有將庫(kù)文件的代碼加入可執(zhí)行
文件中,而是在程序執(zhí)行時(shí)加載庫(kù),這樣可以節(jié)省系統(tǒng)的開銷。一般動(dòng)態(tài)庫(kù)的后綴名
為“.so”,如前面所述的libc.so.6就是動(dòng)態(tài)庫(kù)。gcc在編譯時(shí)默認(rèn)使用動(dòng)態(tài)庫(kù)。
完成了鏈接之后,gcc就可以生成可執(zhí)行文件,如下所示。
[root@localhostgcc]#gcchello.o-ohello
運(yùn)行該可執(zhí)行文件,出現(xiàn)的正確結(jié)果如下。
(root@localhostgcc]#./hello
Hello!Thisisourembeddedworld!
P76makefile
3.5.2makefile變量
david:kang.oyul.o
gcckang.obar.o-omyprog
kang.o:kang.ckang.hhead.h
gcc-Wall-0-g-ckang.c-okang.o
yul.o:bar.chead.h
gcc-Wall-0-g-cyul.c-oyul.o
在這個(gè)makefile中有3個(gè)目標(biāo)體(target)?分別為david、kang.o和yul.o,其中
第一個(gè)目標(biāo)體的依賴文件就是后兩個(gè)目標(biāo)體。如果用戶使用命令"makedavid",則
make管理器就是找到david目標(biāo)體開始執(zhí)行。
這時(shí)、make會(huì)自動(dòng)檢查相關(guān)文件的時(shí)間戳。首先,在檢查“kang.o"、“yul.o”和
“david”3個(gè)文件的時(shí)間戳之前,它會(huì)向下查找那些把“kang.o”或“yul.o”作為目標(biāo)
文件的時(shí)間戳。比如,"kang.o”的依賴文件為“kang.c"、“kang.h"、“head.h"。如果
這些文件中任何一個(gè)的時(shí)間戳比“kang.o”新,則命令"gcc-Wall-0-g-ckang.c-o
kang.o”將會(huì)執(zhí)行,從而更新文件“kang.。"。在更新完“kang.?!被颉皔ul.o”之后,
make會(huì)檢查最初的“kang.o"、"yul.o"和"david”3個(gè)文件,只要文件“kang.o”或
“yuL。”中的至少有一個(gè)文件的時(shí)間戳比“david”新,則第二行命令就會(huì)被執(zhí)行。這
樣,make就完成了自動(dòng)檢查時(shí)間戳的工作,開始執(zhí)行編譯工作。這也就是make工作
的基本流程。
接下來(lái),為了進(jìn)一步簡(jiǎn)化編輯和維護(hù)makefile,make允許在makefile中創(chuàng)建和使
用變量。變量是在makefile中定義的名字,用來(lái)代替一個(gè)文本字符串,該文本字符串
稱為該變量的值。在具體要求下,這些值可以代替目標(biāo)體、依賴文件、命令以及makefile
文件中其他部分。在makefile中的變量定義有兩種方式:一種是遞歸展開方式,另一
種是簡(jiǎn)單方式。
遞歸展開方式定義的變量是在引用該變量時(shí)進(jìn)行替換的,即如果該變量包含了
對(duì)其他變量的引用,則在引用該變量時(shí)一次性將內(nèi)嵌的變量全部展開,雖然這種類
型的變量能夠很好地完成用戶的指令,但是它也有嚴(yán)重的缺點(diǎn),如不能在變量后追
加內(nèi)容(因?yàn)檎Z(yǔ)句:CFLAGS=$(CFLAGS)-O在變量擴(kuò)展過(guò)程中可能導(dǎo)致無(wú)窮循環(huán))。
為了避免上述問(wèn)題,簡(jiǎn)單擴(kuò)展型變量的值在定義處展開,并且只展開一次,因此
它不包含任何對(duì)其他變量的引用,從而消除變量的嵌套引用。
遞歸展開方式的定義格式為:VAR=var。
簡(jiǎn)單擴(kuò)展方式的定義格式為:VAR:=var。
make中的變量使用均使用的格式為:$(VAR)?
變量名是不包括“:”、"鏟’、以及結(jié)尾空格的任何字符串.同時(shí),變
量名中包含字母、數(shù)字以及下劃線以外的情況應(yīng)盡量避免,因?yàn)樗鼈兛赡茉趯?/p>
來(lái)被賦予特別的含義。
變量名是大小寫敏感的,例如變量名“foo”、“FOO”、和“Foo”代表不
同的變量.
推薦在makefile內(nèi)部使用小寫字母作為變量名,預(yù)留大寫字母作為控制隱含規(guī)
則參數(shù)或用戶重載命令選項(xiàng)參數(shù)的變量名。
下面給出了上例中用變量替換修改后的makefile,這里用OBJS代替kang.o和
yul.o,用CC代替gcc,用CFLAGS代替“-Wall-0-g”。這樣在以后修改時(shí),就可以
只修改變量定義,而不需要修改下面的定義實(shí)體,從而大大簡(jiǎn)化了makefile維護(hù)的工作量。
經(jīng)變量替換后的makefile如下所示:
OBJS=kang.oyul.o
CC=gcc
CFLAGS=-Wall-0-g
david:$(OBJS)
$(CC)$(OBJS)-odavid
kang.o:kang.ckang.h
$(CC)$(CFLAGS)-ckang.c-okang.o
yul.o:yul.cyul.h
$(CC)$(CFLAGS)-cyul.c-oyul.o
可以看到,此處變量是以遞歸展開方式定義的。
makefile中的變量分為用戶自定義變量、預(yù)定義變量、自動(dòng)變量及環(huán)境變量。如
上例中的OBJS就是用戶自定義變量,自定義變量的值由用戶自行設(shè)定,而預(yù)定義變
量和自動(dòng)變量為通常在makefile都會(huì)出現(xiàn)的變量,它們的一部分有默認(rèn)值,也就是常
見(jiàn)的設(shè)定值,當(dāng)然用戶可以對(duì)其進(jìn)行修改。
預(yù)定義變量包含了常見(jiàn)編譯器、匯編器的名稱及其編譯選項(xiàng)。表3.15列出了
makefile中常見(jiàn)預(yù)定義變量及其部分默認(rèn)值。
表3.15makefile中常見(jiàn)的預(yù)定義變量
預(yù)定義變量含義
AR\庫(kù)文件維護(hù)程序的名稱,默認(rèn)值為ar
AS匯編程序的名稱,默認(rèn)值為as
CCC編譯器的名稱,默認(rèn)值為cc
CPPC預(yù)編譯器的名稱,默認(rèn)值為$((:0-£
CXXC1編譯器的名稱,默認(rèn)值為g++
FCFortran編譯器的名稱,默認(rèn)值為
RM文件刪除程序的名稱,默認(rèn)值為rm-f
ARFLAGS庫(kù)文件維護(hù)程序的選項(xiàng),無(wú)默認(rèn)值
ASFLAGS匯編程序的選項(xiàng),無(wú)默認(rèn)值
CFLAGSC編譯器的選項(xiàng),無(wú)默認(rèn)值
CPPFLAGSC預(yù)編譯的選項(xiàng),無(wú)默認(rèn)值
CXXFLAGSC++編譯器的選項(xiàng),無(wú)默認(rèn)值
FFLAGSFortran編譯器的選項(xiàng),無(wú)默認(rèn)值
可以看出,上例中的CC和CFLAGS是預(yù)定義變量,其中由于CC沒(méi)有采用默認(rèn)
值,因此,需要把“CC=gcc”明確列出來(lái)。
由于常見(jiàn)的gcc編譯語(yǔ)句中通常包含了目標(biāo)文件和依賴文件,而這些文件在
makefile文件中目標(biāo)體所在行已經(jīng)有所體現(xiàn),因此,為了進(jìn)一步簡(jiǎn)化makefile的編寫,
就引入了自動(dòng)變量。自動(dòng)變量通??梢源砭幾g語(yǔ)句中出現(xiàn)目標(biāo)文件和依賴文件等,
并且具有本地含義(即下一語(yǔ)句中出現(xiàn)的相同變量代表的是下一語(yǔ)句的目標(biāo)文件和依
賴文件)。表3.16列出了makefile中常見(jiàn)的自動(dòng)變量。
自動(dòng)變量含義
S*不包含擴(kuò)展名的目標(biāo)文件名稱
所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依
$+
賴文件
$<第一個(gè)依賴文件的名稱
$?所有時(shí)間戳比目標(biāo)文件晚的依賴文件,并以空格分開
s@目標(biāo)文件的完整名稱
$A所有不重且的依賴文件,以空格分開
5%如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱
自動(dòng)變量的書寫比較難記,但是在熟練了之后使用會(huì)非常方便,請(qǐng)讀者結(jié)合下例
中的自動(dòng)變量改寫的makefile進(jìn)行記憶。
OBJS=kang.oyul.o
CC=gcc
CFLAGS=-Wall-0-g
david:$(OBJS)
$(CC)$A-o$@
kang.o:kang.ckang.h
$(CC)$(CFLAGS)-c$<-o$@
yul.o:yul.cyul.h
$(CC)$(CFLAGS)-c$<-o$@
另外,在makefile中還可以使用環(huán)境變量。使用環(huán)境變量的方法相對(duì)比較簡(jiǎn)單,
make在啟動(dòng)時(shí)會(huì)自動(dòng)讀取系統(tǒng)當(dāng)前已經(jīng)定義了的環(huán)境變量,并且會(huì)創(chuàng)建與之具有相
同名稱和數(shù)值的變量。但是,如果用戶在makefile中定義了相同名稱的變量,那么用
戶自定義變量將會(huì)覆蓋同名的環(huán)境變量。
3.5.3makefile規(guī)則
makefile的規(guī)則是make進(jìn)行處理的依據(jù),它包括了目標(biāo)體、依賴文件及其之間的命
令語(yǔ)句。在上面的例子中,都顯式地指出了makefile中的規(guī)則關(guān)系,如“$(CC)$(CFLAGS)
-c$<-o$@w,但為了簡(jiǎn)化makefile的編寫,make還定義了隱式規(guī)則和模式規(guī)則,下面就
分別對(duì)其進(jìn)行講解。
1.隱式規(guī)則
隱含規(guī)則能夠告訴make怎樣使用傳統(tǒng)的規(guī)則完成任務(wù),這樣,當(dāng)用戶使用它們
時(shí)就不必詳細(xì)指定編譯的具體細(xì)節(jié),而只需把目標(biāo)文件列出即可。make會(huì)自動(dòng)搜索
隱式規(guī)則目錄來(lái)確定如何生成目標(biāo)文件。如上例就可以寫成:
OBJS=kang.oyul.o
CC=gcc
CFLAGS=-Wall-0-g
david:$(OBJS)
$(CC)$A-o$@
為什么可以省略后兩句呢?因?yàn)閙ake的隱式規(guī)則指出:所有“.o”文件都可自
動(dòng)由“.c”文件使用命令“$(CC)$(CPPFLAGS)$(CFLAGS)-cEle.c-ofile.o"來(lái)生成。
這樣“kang.o”和“yul.o”就會(huì)分別通過(guò)調(diào)用<($(CC)$(CFLAGS)-ckang.c-okang.oM
和“$(CC)$(CFLAGS)-cyul.c-oyul.o”來(lái)生成。
在隱式規(guī)則只能查找到相同文件名的不同后緩名文件,如“kang.o”文件必須
由"kang.c"文件生成。
表3.17給出了常見(jiàn)的隱式規(guī)則目錄。
對(duì)應(yīng)語(yǔ)言后綴名隱式規(guī)則
C編譯:<變?yōu)?0$(CC)-c$(CPPFLAGS)S(CFLAGS)
C++編譯:.cc或.C變?yōu)?0$(CXX)yS(CPPFLAGS)$(CXXFLAGS)
Pascal編譯:.p變?yōu)?o$(PC)y$(PFLAGS)
Fortran編譯:.1?變?yōu)?o$(FC)<$(FFLAGS)
2.模式規(guī)則
模式規(guī)則是用來(lái)定義相同處理規(guī)則的多個(gè)文件的。它不同于隱式規(guī)則,隱式規(guī)則
僅僅能夠用make默認(rèn)的變量來(lái)進(jìn)行操作,而模式規(guī)則還能引入用戶自定義變量,為
多個(gè)文件建立相同的規(guī)則,從而簡(jiǎn)化makefile的編寫。
模式規(guī)則的格式類似于普通規(guī)則,這個(gè)規(guī)則中的相關(guān)文件前必須用“%”標(biāo)明。
使用模式規(guī)則修改后的makefile的編寫如下:
OBJS=kang.oyul.o
CC=gcc
CFLAGS=-Wall-0-g
david:$(OBJS)
$(CC)$A-o$@
%.o:%.c
$(CC)$(CFLAGS)-c$<-o$@
3.5.4make管理器的使用
使用make管理器非常簡(jiǎn)單,只需在make命令的后面鍵入目標(biāo)名即可建立指定的
目標(biāo),如果直接運(yùn)行make,則建立makefile中的第一個(gè)目標(biāo)。
此外make還有豐富的命令行選項(xiàng),可以完成各種不同的功能。
表3.18列出了常用的make命令行選項(xiàng)。
命令格式含義
-Cdir讀入指定目錄下的makefile
-ffile讀入當(dāng)前目錄下的file文件作為makefile
-I忽略所有的命令執(zhí)行錯(cuò)誤
-Idir指定被包含的makMle所在目錄
-n只打印要執(zhí)行的命令,但不執(zhí)行這些命令
-P顯示make變量數(shù)據(jù)庫(kù)和隱含規(guī)則
-s在執(zhí)行命令時(shí)不顯示命令
-w如果make在執(zhí)行過(guò)程中改變目錄,則打印當(dāng)前目錄名
P133NFS文件系統(tǒng)
NFS為NetworkFileSystem的簡(jiǎn)稱,最早是由Sun公司提出發(fā)展起來(lái)的,其目的
就是讓不同的機(jī)器、不同的操作系統(tǒng)之間通過(guò)網(wǎng)絡(luò)可以彼此共享文件。NFS可以讓不
同的主機(jī)通過(guò)網(wǎng)絡(luò)將遠(yuǎn)端的NFS服務(wù)器共享出來(lái)的文件安裝到自己的系統(tǒng)中,從客戶
端看來(lái),使用NFS的遠(yuǎn)端文件就像是使用本地文件一樣。在嵌入式中使用NFS會(huì)使
應(yīng)用程序的開發(fā)變得十分方便,并且不用反復(fù)地?zé)龑懹诚裎募?/p>
NFS的使用分為服務(wù)端和客戶端,其中服務(wù)端是提供要共享的文件,而客
戶端則通過(guò)掛載(“mount")這一動(dòng)作來(lái)實(shí)現(xiàn)對(duì)共享文件的訪問(wèn)操作。下面主要
介紹NFS服務(wù)端的使用。在嵌入式開發(fā)中,通常NFS服務(wù)端在宿主機(jī)上運(yùn)行,
而客戶端在目標(biāo)板上運(yùn)行。
NFS服務(wù)端是通過(guò)讀入它的配置文件“/etc/exports”來(lái)決定所共享的文件目錄的。
下面首先講解這個(gè)配置文件的書寫規(guī)范。
在這個(gè)配置文件中,每一行都代表一項(xiàng)要共享的文件目錄以及所指定的客戶端對(duì)
它的操作權(quán)限??蛻舳丝梢愿鶕?jù)相應(yīng)的權(quán)限,對(duì)該目錄下的所有目錄文件進(jìn)行訪問(wèn)。
配置文件中每一行的格式如下:
[共享的目錄][客戶端主機(jī)名稱或[P][參數(shù)1,參數(shù)2…]
在這里,主機(jī)名或IP是可供共享的客戶端主機(jī)名或IP,若對(duì)所有的IP都可以訪
問(wèn),則可用“*”表示。這里的參數(shù)有很多種組合方式,常見(jiàn)的參數(shù)如表5.1所示。
選項(xiàng)參數(shù)含義
rw可讀寫的權(quán)限
ro只讀的權(quán)限
NFS客戶端分享目錄使用者的權(quán)限,即如果客戶端使用的是root用戶,那么對(duì)于
no__root_$qua$h
這個(gè)共享的目錄而言,該客戶端就具有root的權(quán)限
sync資料同步寫入到內(nèi)存與硬盤當(dāng)中
async資料會(huì)先暫存于內(nèi)存當(dāng)中,而非直接寫入硬盤
如在本例中,配置文件"/etc/exports”的代碼如下:
(root@localhostfs]#cat/etc/exports
/root/workplace192.168.1.*(rw,no_root_squash)
在設(shè)定完配置文件之后,需要啟動(dòng)nfs服務(wù)和portmap服務(wù),這里的portm叩服
務(wù)是允許NFS客戶端查看NFS服務(wù)在用的端口,在它被激活之后,就會(huì)出現(xiàn)一個(gè)端
口號(hào)為111的sunRPC(遠(yuǎn)端過(guò)程調(diào)用)的服務(wù)。這是NFS服務(wù)中必須實(shí)現(xiàn)的一項(xiàng),
因此,也必須把它開啟。如下所示:
[root0localhostfs]#serviceportmapstart
啟動(dòng)portmap:[確定]
(rootQlocalhostfs]#servicenfsstart
啟動(dòng)NFS服務(wù):[確定]
關(guān)掉NFS配額:[確定]
啟動(dòng)NFS守護(hù)進(jìn)程:[確定]
啟動(dòng)NFSmountd:[確定)
可以看到,在啟動(dòng)NFS服務(wù)的時(shí)候啟動(dòng)了mountd進(jìn)程。這是NFS掛載服務(wù),用
于處理NFS遞交過(guò)來(lái)的客戶端請(qǐng)求。另外還會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然
后就開始監(jiān)聽客戶端的請(qǐng)求,用"cat/var/log/messages"命令可以查看操作是否成功。
這樣,就啟動(dòng)了NFS的服務(wù),另外還有兩個(gè)命令,可以便于使用NFS。
其中一個(gè)是exportfs,它可以重新掃描“/etc/exports”,使用戶在修改了“/etc/exports”
配置文件之后不需要每次重啟NFS服務(wù)。其格式為:
exportfs[選項(xiàng)]
exportfs的常見(jiàn)選項(xiàng)如表5.2所示。
選項(xiàng)參數(shù)含義
-a全部掛載(或卸載)/etc/exports中的設(shè)定文件目錄
-r重新掛載/etc,exports中的設(shè)定文件目錄
-u卸載某一目錄
-V在export的時(shí)候,將共享的目錄顯示到屏晶上
另外一個(gè)是showmount命令,它用于當(dāng)前的掛載情況。其格式為:
showmount[選項(xiàng)]hostname
showmount的常見(jiàn)選項(xiàng)如表5.3所示。
選項(xiàng)參數(shù)含義
-a在屏辭上顯示目前主機(jī)與客戶端所連上來(lái)的使用目錄狀態(tài)
-e顯示hostname中/etcexports里設(shè)定的共享目錄
P154:open。、read。、write。、lseek()和close。
6.3.1基本文件操作
(1)函數(shù)說(shuō)明。
open。函數(shù)用于打開或創(chuàng)建文件,在打開或創(chuàng)建文件時(shí)可以指定文件的屬性及用
戶的權(quán)限等各種參數(shù)。
close。函數(shù)用于關(guān)閉一個(gè)被打開的文件。當(dāng)一個(gè)進(jìn)程終止時(shí),所有被它打開的文
件都由內(nèi)核自動(dòng)關(guān)閉,很多程序都使用這一功能而不顯示地關(guān)閉一個(gè)文件。
read。函數(shù)用于將從指定的文件描述符中讀出的數(shù)據(jù)放到緩存區(qū)中,并返回實(shí)際
讀入的字節(jié)數(shù)。若返回0,則表示沒(méi)有數(shù)據(jù)可讀,即已達(dá)到文件尾。讀操作從文件的
當(dāng)前指針位置開始。當(dāng)從終端設(shè)備文件中讀出數(shù)據(jù)時(shí),通常一次最多讀一行。
write。函數(shù)用于向打開的文件寫數(shù)據(jù),寫操作從文件的當(dāng)前指針位置開始。對(duì)磁
盤文件進(jìn)行寫操作,若磁盤已滿或超出該文件的長(zhǎng)度,則write。函數(shù)返回失敗。
lseek()函數(shù)用于在指定的文件描述符中將文件指針定位到相應(yīng)的位置。它只能用
在可定位(可隨機(jī)訪問(wèn))文件操作中。管道、套接字和大部分字符設(shè)備文件是不可定
位的,所以在這些文件的操作中無(wú)法使用lseek()調(diào)用。
(2)函數(shù)格式。
open。函數(shù)的語(yǔ)法格式如表6.1所示。
前nchide<sys/type$.h>/*提供類型pid_【的定義*/
所需頭文件芹include<sys/stat.h>
存include
函數(shù)原型intopen(constchar"pathname,intflags,intperms)
pathname被打開的文件名(可包括路竹名予
O_RDONLY:以*讀方有打胭件
O_WRONLY:以代寫方式打開文件
O_RDWR:以讀寫方樂(lè)打開文件
O_CREAT:如果該文件不存在,就創(chuàng)建一個(gè)新的文件,并用第
三個(gè)參數(shù)為其設(shè)置權(quán)限
O_EXCL:如果使用O_CREAT時(shí)文件存在,則可返回錯(cuò)誤消息。
flag:文件打開這一參數(shù)可測(cè)試文件息否存在.此時(shí)open是原子操作,防止多
的方式“弋進(jìn)程同時(shí)創(chuàng)建同一個(gè)文件
0_N0CE:使用本參數(shù)時(shí),若文件為終端,那么該終端不會(huì)
函數(shù)傳入值成為調(diào)用open。的那個(gè)進(jìn)程的控制終端
O_TRUNC:若文件已經(jīng)存在,那么會(huì)刪除文件中的全部原有數(shù)
據(jù),并且設(shè)置文件大小為0。
O_APPEND:以添加方式打開文件,在打開文件的同時(shí),文件
指針指向文件的末尾,即將寫入的數(shù)據(jù)添加到文件的末尾
被打開文件的存取權(quán)限
可以用一組宏定義:S_I(RWX)(USRGRPOTH)
其中RWX分別表示讀號(hào)/執(zhí)行權(quán)限
perms
USRGRPOTH分別表示文件所有者/文件所屬組/其他用戶
例如,SJRUSRS_IWUSR表示設(shè)置文件所有者的可讀可寫屬
性.八加制
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生豬養(yǎng)殖與農(nóng)業(yè)產(chǎn)業(yè)扶貧合作協(xié)議
- 二零二五年度制造業(yè)工傷責(zé)任保險(xiǎn)合同
- 2025年度男方道歉夫妻共同生活保證協(xié)議
- 2025年度飯店短期勞務(wù)合同-客房服務(wù)員職業(yè)健康與安全協(xié)議
- 二零二五年度物業(yè)公司員工勞動(dòng)合同(含社區(qū)文化活動(dòng))
- 監(jiān)理技術(shù)服務(wù)合同
- 綠色數(shù)據(jù)中心建設(shè)運(yùn)營(yíng)合同
- 環(huán)境影響評(píng)估結(jié)果展示表
- 股份制企業(yè)股權(quán)分配與管理制度文書
- 財(cái)務(wù)與成本控制管理細(xì)則
- 酒店幕墻工程單元板塊幕墻軌道吊裝方案
- 裝飾材料與構(gòu)造(共153張PPT)
- 職業(yè)健康安全交底
- GB∕T 28610-2020 甲基乙烯基硅橡膠
- GB∕T 7588.1-2020 電梯制造與安裝安全規(guī)范 第1部分:乘客電梯和載貨電梯
- 4.昆蟲備忘錄 課件(共15張PPT)
- DB37∕T 5191-2021 高延性混凝土加固技術(shù)規(guī)程
- 2022年全省公訴業(yè)務(wù)知識(shí)考試參考答案
- 鎮(zhèn)政府(街道辦事處)辦公大樓平面圖
- 軟壓光機(jī)計(jì)算說(shuō)明
- 森林防火安全責(zé)任書(施工隊(duì)用)
評(píng)論
0/150
提交評(píng)論