




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
(-)文獻(xiàn)操作篇
1、creat(建立文獻(xiàn))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/stat.h>
3#include<fcntl.h>
定義函數(shù)
1intcreat(constchar*pathname,mode_tmode);
函數(shù)說(shuō)明
參數(shù)paihname指向欲建立的文獻(xiàn)途徑字符串。creai()相稱(chēng)于使用下列的調(diào)用方式調(diào)用open。
1open(constchar*pathname,(O_CREAT|O_WRONLY|O_TRUNC));
錯(cuò)誤代碼
關(guān)于參數(shù)mode請(qǐng)參考o(jì)pen()函數(shù)。
返回值
creat()會(huì)返回新的文獻(xiàn)描述詞,若有錯(cuò)誤發(fā)生則會(huì)返回-1,并把錯(cuò)誤代碼設(shè)給errno。
EEXIST參數(shù)pathname所指的文獻(xiàn)已存在。
EACCESS參數(shù)pathname所指定的文獻(xiàn)不符合所規(guī)定測(cè)試的權(quán)限
EROFS欲打開(kāi)寫(xiě)入權(quán)限的文獻(xiàn)存在于只讀文獻(xiàn)系統(tǒng)內(nèi)
EFAULT參數(shù)pathname指升超過(guò)可存取的內(nèi)存空間
EINVAL參數(shù)mode不對(duì)的。
ENAMETOOLONG參數(shù)pathname太長(zhǎng)。
ENOTDIR參數(shù)pathname為一目錄
ENOMEM核心內(nèi)存局限性
ELOOP參數(shù)paihname有過(guò)多符號(hào)連接問(wèn)題。
EMFILE已達(dá)成進(jìn)程可同時(shí)打開(kāi)的文獻(xiàn)數(shù)上限
ENFILE已達(dá)成系統(tǒng)可同時(shí)打開(kāi)的文獻(xiàn)數(shù)上限
附加說(shuō)明
creat()無(wú)法建立特別的裝置文獻(xiàn),假如需要請(qǐng)使用mknod(),
2、open(打開(kāi)文獻(xiàn))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/slat.h>
3#include<fcntl.h>
定義函數(shù)
Iintopen(constchar*pathname,intflags);
2intopen(constchar*pathname,iniflags,mode_lmode);
函數(shù)說(shuō)明
參數(shù)pathname指向欲打開(kāi)的文獻(xiàn)途徑字符串。下列是參數(shù)flags所能使用的旗標(biāo):
O.RDONLY以只讀方式打開(kāi)文獻(xiàn)
O_WRONLY以只寫(xiě)方式打開(kāi)文獻(xiàn)
O_RDWR以可讀寫(xiě)方式打開(kāi)文獻(xiàn)。上述三種旗標(biāo)是互斥的,也就是不可同時(shí)使用,但可與下列
的旗標(biāo)運(yùn)用OR(|)運(yùn)算符組合。
O_CREAT若欲打開(kāi)的文獻(xiàn)不存在則自動(dòng)建立該文獻(xiàn)。
O_EXCL假如O-CREAT也被設(shè)立,此指令會(huì)去檢查文獻(xiàn)是否存在。文獻(xiàn)若不存在則建立該文
獻(xiàn),否則將導(dǎo)致打開(kāi)文獻(xiàn)錯(cuò)誤。此外,若O-CREAT與O_EXCL同時(shí)設(shè)立,并且欲打開(kāi)的文獻(xiàn)
為符號(hào)連接,則會(huì)打開(kāi)文獻(xiàn)失敗。
O_NOCTTY假如欲打開(kāi)的文獻(xiàn)為終端機(jī)設(shè)備時(shí),則不會(huì)將該終端機(jī)當(dāng)成進(jìn)程控制終端機(jī)。
O_TRUNC若文獻(xiàn)存在并且以可寫(xiě)的方式打開(kāi)時(shí),此旗標(biāo)會(huì)令文獻(xiàn)長(zhǎng)度清為0,而本來(lái)存于該
文獻(xiàn)的資料也會(huì)消失。
O_APPEND當(dāng)讀寫(xiě)文獻(xiàn)時(shí)會(huì)從文獻(xiàn)尾開(kāi)始移動(dòng),也就是所寫(xiě)入的數(shù)據(jù)會(huì)以附加的方式加入到文
獻(xiàn)后面。
O_NONBLOCK以不可阻斷的方式打開(kāi)文獻(xiàn),也就是無(wú)論有無(wú)數(shù)據(jù)讀取或等待,都會(huì)立即返回
進(jìn)程之中。
O.NDELAY同O_NONBLOCK。
O_SYNC以同步的方式打開(kāi)文獻(xiàn)。
O_NOFOLLOW假如參數(shù)pathname所指的文獻(xiàn)為一符號(hào)連接,則會(huì)令打開(kāi)文獻(xiàn)失敗。
O_DIRECTORY假如參數(shù)pathname所指的文獻(xiàn)并非為一目錄,則會(huì)令打開(kāi)文獻(xiàn)失敗。
此為L(zhǎng)inux2.2以后特有的旗標(biāo),以避免一些系統(tǒng)安全問(wèn)題。參數(shù)mode則有卜.列數(shù)種組合,只
有在建立新文獻(xiàn)時(shí)才會(huì)生效,此外真正建文獻(xiàn)時(shí)的權(quán)限會(huì)受到umask值所影響,因此該文獻(xiàn)權(quán)
限應(yīng)當(dāng)為(mode-umaks)。
SJRWXU00700權(quán)限,代表該文獻(xiàn)所有者具有可讀、可寫(xiě)及可執(zhí)行的權(quán)限。
S」RUSR或S」READ,00400權(quán)限,代表該文獻(xiàn)所有者具有可讀取的權(quán)限。
S」WUSR或S」WRITE,。0200權(quán)限,代表該文獻(xiàn)所有者具有可寫(xiě)入的權(quán)限。
S」XUSR或S」EXEC,00100權(quán)限,代表該文獻(xiàn)所有者具有可執(zhí)行的權(quán)限。
S」RWXG00070權(quán)限,代表該文獻(xiàn)用戶(hù)組具有可讀、可寫(xiě)及可執(zhí)行的權(quán)限。
S」RGRP00040權(quán)限,代表該文獻(xiàn)用戶(hù)組具有可讀的權(quán)限。
SJWGRP00020權(quán)限,代表該文獻(xiàn)用戶(hù)組具有可寫(xiě)入的權(quán)限。
S」XGRP00010權(quán)限,代表該文獻(xiàn)用戶(hù)組具有可執(zhí)行的權(quán)限。
S」RWXO00007權(quán)限,代表其他用戶(hù)具有可讀、可寫(xiě)及可執(zhí)行的權(quán)限。
S」ROTH00004權(quán)限,代表其他用戶(hù)具有可讀的權(quán)限
S-IWOTH00002權(quán)限,代表其他用戶(hù)具有可寫(xiě)入的權(quán)限。
SJXOTH00001權(quán)限,代表其他用戶(hù)具有可執(zhí)行的權(quán)限。
返回值
若所有欲核查的權(quán)限都通過(guò)了檢查則返回0值,表達(dá)成功,只要有一個(gè)權(quán)限被嚴(yán)禁則返回?1。
錯(cuò)誤代碼
EEXIST參數(shù)pathname所指的文獻(xiàn)已存在,卻使用了O_CREAT和O_EXCL旗標(biāo)。
EACCESS參數(shù)pathname所指的文獻(xiàn)不符合所規(guī)定測(cè)試的權(quán)限。
EROFS欲測(cè)試寫(xiě)入權(quán)限的文獻(xiàn)存在于只讀文獻(xiàn)系統(tǒng)內(nèi)。
EFAULT參數(shù)pathname指針超過(guò)可存取內(nèi)存空間。
EINVAL參數(shù)mode不對(duì)的。
ENAMETOOLONG參數(shù)pathname太長(zhǎng)。
ENOTDIR參數(shù)pathname不是目錄。
假如順利read。會(huì)返回實(shí)際讀到的字節(jié)數(shù),最佳能將返回值與參數(shù)couni作比較,若返回的字節(jié)
數(shù)比規(guī)定讀取的字節(jié)數(shù)少,則有也許讀到了文獻(xiàn)尾、從管道(pipe)或終端機(jī)讀取,或者是read。
被信號(hào)中斷了讀取動(dòng)作。當(dāng)有錯(cuò)誤發(fā)生時(shí)則返回-1,錯(cuò)誤代碼存入errno中,而文獻(xiàn)讀寫(xiě)位置則
無(wú)法預(yù)期。
錯(cuò)誤代碼
EINTR此調(diào)用被信號(hào)所中斷。
EAGAIN當(dāng)使用不可阻斷I/O時(shí)(O_NONBLOCK),若無(wú)數(shù)據(jù)可讀取則返回此值。
EBADF參數(shù)fd非有效的文獻(xiàn)描述同,或該文獻(xiàn)已關(guān)閉。
5、write(將數(shù)據(jù)寫(xiě)入已打開(kāi)的文獻(xiàn)內(nèi))
頭文獻(xiàn)
I#include<unistd.h>
定義函數(shù)
1ssize_twrite(intfd,constvoid*buf,size_tcount);
函數(shù)說(shuō)明
write。會(huì)把參數(shù)buf所指的為存寫(xiě)入count個(gè)字節(jié)到參數(shù)fd所指的文獻(xiàn)內(nèi)。當(dāng)然,文獻(xiàn)讀寫(xiě)位置
也會(huì)隨之移動(dòng)。
返回值
假如順利write。會(huì)返回實(shí)際寫(xiě)入的字節(jié)數(shù)。當(dāng)有錯(cuò)誤發(fā)生時(shí)則返回-1,錯(cuò)誤代碼存入errno中。
錯(cuò)誤代碼
EINTR此調(diào)用被信號(hào)所中斷。
EAGAIN當(dāng)使用不可阻斷I/O時(shí)(CLNONBLOCK),若無(wú)數(shù)據(jù)可讀取則返回此值。
EADF參數(shù)fd非有效的文獻(xiàn)描述詞,或該文獻(xiàn)已關(guān)閉。
6、flock(鎖定文獻(xiàn)或解除鎖定)
頭文獻(xiàn)
1#include<sys/file.h>
定義函數(shù)
1intflock(intfd,intoperation);
函數(shù)說(shuō)明
flock。會(huì)依參數(shù)operation所指定的方式對(duì)參數(shù)fd所指的文獻(xiàn)做各種鎖定或解除鎖定的動(dòng)作。此
函數(shù)只能鎖定整個(gè)文獻(xiàn),無(wú)法鎖定文獻(xiàn)的某一區(qū)域。
參數(shù)
operation有下列四種情況:
LOCK_SH建立共享鎖定。多個(gè)進(jìn)程可同時(shí)對(duì)同一個(gè)文獻(xiàn)作共享鎖定。
LOCK_EX建立互斥鎖定。一個(gè)文獻(xiàn)同時(shí)只有一個(gè)互斥鎖定。
LOCK_UN解除文獻(xiàn)鎖定狀態(tài)。
LOCK_NB無(wú)法建立鎖定期,此操作可不被阻斷,立即返回進(jìn)程。通常與LOCK_SH或
LOCK_EX做OR(|)組合。
單一文獻(xiàn)無(wú)法同時(shí)建立共享鎖定和互斥鎖定,而當(dāng)使用dup()或fork。時(shí)文獻(xiàn)描述詞不會(huì)繼承此
種鎖定。
返回值
返回。表達(dá)成功,若有錯(cuò)誤則返回-1,錯(cuò)誤代碼存于erm。。
7、Iscek(移動(dòng)文獻(xiàn)的讀寫(xiě)位置)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<unistd.h>
定義函數(shù)
1off_tlseek(intfildes,off_toffset,intwhence);
函數(shù)說(shuō)明
每一個(gè)已打開(kāi)的文獻(xiàn)都有一個(gè)讀寫(xiě)位置,當(dāng)打開(kāi)文獻(xiàn)時(shí)通常其讀寫(xiě)位置是指向文獻(xiàn)開(kāi)頭,若是
以附加的方式打開(kāi)文獻(xiàn)(如O_APPEND),則讀寫(xiě)位置會(huì)指向文獻(xiàn)尾。當(dāng)read?;騱rite。時(shí),讀
寫(xiě)位置會(huì)隨之增長(zhǎng),lseek()便是用來(lái)控制該文獻(xiàn)的讀寫(xiě)位置。參數(shù)fildes為已打開(kāi)的文獻(xiàn)描述
詞,參數(shù)offset為根據(jù)參數(shù)whence來(lái)移動(dòng)讀寫(xiě)位置的位移數(shù)。
參數(shù)
whence為下列其中一種:
SEEK.SET參數(shù)offset即為新的讀寫(xiě)位置。
SEEKCUR以目前的讀寫(xiě)位置往后增長(zhǎng)。ffset個(gè)位移量。
SEEK_END將讀寫(xiě)位置指向文獻(xiàn)尾后再熠長(zhǎng)offset個(gè)位移量。
當(dāng)whence值為SEEK.CUR或SEEK_END時(shí),參數(shù)offet允許負(fù)值的出現(xiàn)。
下列是教特別的使用方式:
1)欲將讀寫(xiě)位置移到文獻(xiàn)開(kāi)頭時(shí):lseek(intfildes,O,SEEK_SET);
2)欲將讀寫(xiě)位置移到文獻(xiàn)尾時(shí):lseek(intfildes,0,SEEK_END);
3)想要取得目前文獻(xiàn)位置時(shí):lseek(intfildes,O.SEEK_CUR):
返回值
當(dāng)調(diào)用成功時(shí)則返回目前的讀寫(xiě)位置,也就是距離文獻(xiàn)開(kāi)頭多少個(gè)字節(jié)。若有錯(cuò)誤則返回
ermo會(huì)存放錯(cuò)誤代碼。
附加說(shuō)明
Linux系統(tǒng)不允許keek()對(duì)lly裝置作用,此項(xiàng)動(dòng)作會(huì)令I(lǐng)seek()返回ESPIPE。
8、fcntl(文獻(xiàn)描述詞操作)
頭文獻(xiàn)
1#include<unistd.h>
2#include<fcntLh>
定義函數(shù)
1intfcntl(intfd,intcmd);
2intfcntl(intfd,intcmd.longarg);
3intfcntl(intfd,intcmd,structflock*lock);
函數(shù)說(shuō)明
fcntl()用來(lái)操作文獻(xiàn)描述詞的一些特性。參數(shù)fd代表欲設(shè)立的文獻(xiàn)描述詞,參數(shù)cmd代表欲操
作的指令。
有以下幾種情況:
F_DUPFD用來(lái)查找大于或等于參數(shù)arg的最小且仍未使用的文獻(xiàn)描述詞,并且復(fù)制參數(shù)fd的
文獻(xiàn)描述詞。執(zhí)行成功則返回新復(fù)制的文獻(xiàn)描述詞。請(qǐng)參考dup2()。F_GETFD取得close-on-
excc旗標(biāo)。若此旗標(biāo)的FD.CLOEXEC位為0,代表在調(diào)用exec。相關(guān)函數(shù)時(shí)文獻(xiàn)將不會(huì)關(guān)閉。
F.SETFD設(shè)立ciose-on-exec旗標(biāo)。該旗標(biāo)以參數(shù)arg的FD.CLOEXEC位決定。
F_GETFL取得文獻(xiàn)描述詞狀態(tài)旗標(biāo),此旗標(biāo)為open()的參數(shù)flags。
F_SETFL設(shè)立文獻(xiàn)描述詞狀態(tài)旗標(biāo),參數(shù)arg為新旗標(biāo),但只允許O_APPEND、
O_NONBLOCK和O_ASYNC位的改變,其他位的改變將不受影響。
F_GETLK取得文獻(xiàn)鎖定的狀態(tài)。
F_SETLK設(shè)立文獻(xiàn)鎖定的狀態(tài)。此時(shí)tlcok結(jié)構(gòu)的l」ype值必須是F_RDLCK、F_WRLCK或
F_UNLCK。假如無(wú)法建立鎖定,則返回-1,錯(cuò)誤代碼為EACCES或EAGAIN。
F_SETLKWF_SETLK作用相同,但是無(wú)法建立鎖定期,此調(diào)用會(huì)一直等到鎖定動(dòng)作成功為
止。若在等待鎖定的過(guò)程中被信號(hào)中斷時(shí),會(huì)立即返回-1,錯(cuò)誤代碼為EINTR。參數(shù)lock指針
為flock結(jié)構(gòu)指針,定義如下
1structflcok
2{
3shortintl_type;/*鎖定的狀態(tài)*/
4shortintLwhence;/*決定l_start位置*/
5offltLstart;/*鎖定區(qū)域的開(kāi)頭位置*/
6off」l」en;/*鎖定區(qū)域的大小*/
7pid_tl_pid;/*鎖定動(dòng)作的進(jìn)程*/
8};
Ltype有三種狀態(tài):
F_RDLCK建立一個(gè)供讀取用的鎖定
F.WRLCK建立一個(gè)供寫(xiě)入用的鎖定
F_UNLCK刪除之前建立的鎖定
l_whence也有三種方式:
SEEK.SET以文獻(xiàn)開(kāi)頭為鎖定的起始位置。
SEEK_CUR以目前文獻(xiàn)讀寫(xiě)位置為鎖定的起始位置
SEEK_END以文獻(xiàn)結(jié)尾為鎖定的起始位置。
返回值
成功則返回0,若有錯(cuò)誤則返回-1,錯(cuò)誤因索存于ermo.
9、fgets(由文獻(xiàn)中讀取一字符串)
頭文獻(xiàn)
1include<stdio.h>
定義函數(shù)
1char*fgets(char*s,intsize,FILE*stream);
函數(shù)說(shuō)明
fgets()用來(lái)從參數(shù)stream所指的文獻(xiàn)內(nèi)讀入字符并存到參數(shù)s所指的內(nèi)存空間,直到出現(xiàn)換行
字符、讀到文獻(xiàn)尾或是已讀了size/個(gè)字符為止,最后會(huì)加上NULL作為字符串結(jié)束。
返回值
gcts()若成功則返回s指針,返回NULL則表達(dá)有錯(cuò)誤發(fā)生.
10、fputs(將一指定的字符串寫(xiě)入文獻(xiàn)內(nèi))
頭文獻(xiàn)
1#include<stdio.h>
定義函數(shù)
1intfputs(constchar*s,FILE*stream);
函數(shù)說(shuō)明
fputs。用來(lái)將參數(shù)s所指的字符串寫(xiě)入到參數(shù)stream所指的文獻(xiàn)內(nèi)。
返回值
若成功則返回寫(xiě)出的字符個(gè)數(shù),返回EOF則表達(dá)有錯(cuò)誤發(fā)生。
(二)內(nèi)存控制篇
1、calloc(配置內(nèi)存空間)
頭文獻(xiàn)
1#include<stdlib.h>
定義函數(shù)
1void*calloc(size_tnmemb,size_tsize);
函數(shù)說(shuō)明
calloc。用來(lái)配置nmemb個(gè)相鄰的內(nèi)存單位,每一單位的大小為size,并返回指向第一個(gè)元素的
指針。這和使用卜,歹U的方式效果相同:ma1loc(nmen]b*size);但是,在運(yùn)用calloc。配置內(nèi)存時(shí)會(huì)將
內(nèi)存內(nèi)容初始化為0。
返回值
若配置成功則返回一指針,失敗則返回NULLo
2、free(釋放原先配置的內(nèi)存)
頭文獻(xiàn)
1#include<stdlib.h>
定義函數(shù)
1voidfree(void*ptr);
函數(shù)說(shuō)明
參數(shù)ptr為指向先前由maHoc。、calloc()或realloc。所返回的內(nèi)存指針。調(diào)用free。后ptr所指的
內(nèi)存空間便會(huì)被收回。假若參數(shù)ptr所指的內(nèi)存空間已被收回或是未知的內(nèi)存地址,則調(diào)用
free()也許會(huì)有無(wú)法預(yù)期的情況發(fā)生。若參數(shù)plr為NULL,則free。不會(huì)有任何作用。
3.malloc(配置內(nèi)存空間)
頭文獻(xiàn)
1#include<stdlib.h>
定義函數(shù)
1void*malloc(size_tsize);
函數(shù)說(shuō)明
malloc。用來(lái)配置內(nèi)存空間,其大小由指定的size決定。
返回值
若配置成功則返回一指針,失敗則返回NULLo
范例
voidp=malloc(1024);/*配置1k的內(nèi)存*/
(三)進(jìn)程操作篇
1、execl(執(zhí)行文獻(xiàn))
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1intexecl(constchar*path,constchar*arg,....);
函數(shù)說(shuō)明
cxccK)用來(lái)執(zhí)行參數(shù)path字符串所代表的文獻(xiàn)途徑,接下來(lái)的參數(shù)代表執(zhí)行該文獻(xiàn)時(shí)傳遞過(guò)去
的argv(O)、argv[I]...,最后一個(gè)參數(shù)必須用空指針(NULL)作結(jié)束。
返回值
假如執(zhí)行成功則函數(shù)不會(huì)返回,執(zhí)行失敗則直接返回-1,失敗因素存于erm。中。
2、execlp(從PATH環(huán)境變量中查找文獻(xiàn)并執(zhí)行)
頭文獻(xiàn)
#include<unisld.h>
定義函數(shù)
1intexcclp(constchar*file,constchar*arg,.......);
函數(shù)說(shuō)明
execlp。會(huì)從PATH環(huán)境變量所指的目錄中查找符合參數(shù)tile的文獻(xiàn)名,找到后便執(zhí)行該文獻(xiàn),
然后將第二個(gè)以后的參數(shù)當(dāng)做該文獻(xiàn)的argv[0]、argv[l]……,最后一個(gè)參數(shù)必須用空指針
(NULL)作結(jié)束。
返回值
假如執(zhí)行成功則函數(shù)不會(huì)返回,執(zhí)行失敗則宜接返回-1,失敗因素存于erm。中。
錯(cuò)誤代碼
參考exeeve。。
3、exeev(執(zhí)行文獻(xiàn))
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1intexecv(constchar*path,char*constargv[J);
函數(shù)說(shuō)明
execv()用來(lái)執(zhí)行參數(shù)path字符串所代表的文獻(xiàn)途徑,與execl。不同的地方在于execve。只甯兩
個(gè)參數(shù),第二個(gè)參數(shù)運(yùn)用數(shù)組指針來(lái)傳遞給執(zhí)行文獻(xiàn)。
返回值
假如執(zhí)行成功則函數(shù)不會(huì)返同,執(zhí)行失敗則直接返PM,失敗因素存于erm。中。
錯(cuò)誤代碼
請(qǐng)參考execve()。
4、execve(執(zhí)行文獻(xiàn))
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1intexecve(constcharxfilename,char*constargvf],char*constenvpf1);
函數(shù)說(shuō)明
execve。用來(lái)執(zhí)行參數(shù)filename字符串所代表的文獻(xiàn)途徑,第二個(gè)參數(shù)系運(yùn)用數(shù)組指針來(lái)傳遞給
執(zhí)行文獻(xiàn),最后一個(gè)參數(shù)則為傳遞給執(zhí)行文獻(xiàn)的新環(huán)境變量數(shù)組.
返回值
假如執(zhí)行成功則函數(shù)不會(huì)返回,執(zhí)行失敗則直接返回-1,失敗因素存于erm。中。
錯(cuò)誤代碼
EACCES
1.欲執(zhí)行的文獻(xiàn)不具有用戶(hù)可執(zhí)行的權(quán)限。
2.欲執(zhí)行的文獻(xiàn)所屬的文獻(xiàn)系統(tǒng)是以noexec方式掛上。
3.欲執(zhí)行的文獻(xiàn)或script翻譯器非一般文獻(xiàn)。
EPERM
1.進(jìn)程處在被追蹤模式,執(zhí)行者并不具有root權(quán)限,欲執(zhí)行的文獻(xiàn)具有SUID或SGID位。
2.欲執(zhí)行的文獻(xiàn)所屬的文獻(xiàn)系統(tǒng)是以nosuid方式掛上,欲執(zhí)行的文獻(xiàn)具有SUID或SGID位
元,但執(zhí)行者并不具有r。。:權(quán)限。
E2BIG參數(shù)數(shù)組過(guò)大
ENOEXEC無(wú)法判斷欲執(zhí)行文獻(xiàn)的執(zhí)行文獻(xiàn)格式,有也許是格式錯(cuò)誤或無(wú)法在此平臺(tái)執(zhí)行。
EFAULT參數(shù)filename所指的字符串地址超過(guò)可存取空間范圍。
ENAMETOOLONG參數(shù)filename所指的字符串太長(zhǎng)。
ENOENT參數(shù)filename字符串所指定的文獻(xiàn)不存在。
ENOMEM核心內(nèi)存局限性
ENOTDIR參數(shù)filename字符串所包含的目錄途徑并非有效目錄
EACCES參數(shù)filename字符串所包含的目錄途徑無(wú)法存取,權(quán)限局限性
ELOOP過(guò)多的符號(hào)連接
ETXTBUSY欲執(zhí)行的文獻(xiàn)已被其他進(jìn)程打開(kāi)并且正把數(shù)據(jù)寫(xiě)入該文獻(xiàn)中
EIOI/O存取錯(cuò)誤
ENFILE已達(dá)成系統(tǒng)所允許的打開(kāi)文獻(xiàn)總數(shù)。
EMFILE已達(dá)成系統(tǒng)所允許單一進(jìn)程所能打開(kāi)的文獻(xiàn)總數(shù)。
EINVAL欲執(zhí)行文獻(xiàn)的ELF執(zhí)行格式不只一個(gè)PT」NTERP節(jié)區(qū)
EISDIRELF翻譯器為一目錄
ELIBBADELF翻譯器有問(wèn)題。
5、execvp(執(zhí)行文獻(xiàn))
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1iniexecvp(constchar*file,char*constargv[]);
函數(shù)說(shuō)明
execvp()會(huì)從PATH環(huán)境變量所指的目錄中杳找符合參數(shù)file的文獻(xiàn)名,找到后便執(zhí)行該文獻(xiàn),
然后將第二個(gè)參數(shù)argv傳給該欲執(zhí)行的文獻(xiàn)。
返回值
假如執(zhí)行成功則函數(shù)不會(huì)返回,執(zhí)行失敗則直接返回-1,失敗因素存于erm。中。
錯(cuò)誤代碼
請(qǐng)參考execve()。
6、exit(正常結(jié)束進(jìn)程)
頭文獻(xiàn)
1#include<sldlib.h>
定義函數(shù)
1voidexit(intstatus);
函數(shù)說(shuō)明
exil()用來(lái)正常終結(jié)目前進(jìn)程的執(zhí)行,并把參數(shù)sialus返回給父進(jìn)程,而進(jìn)程所有的緩沖區(qū)數(shù)據(jù)
會(huì)自動(dòng)寫(xiě)回并關(guān)閉未關(guān)閉的文獻(xiàn)。
7、.exit(結(jié)束進(jìn)程執(zhí)行)
頭文獻(xiàn)
I#include<unistd.h>
定義函數(shù)
1void_exil(intstatus);
函數(shù)說(shuō)明
_exit()用來(lái)立刻結(jié)束目前進(jìn)程的執(zhí)行,并把參數(shù)status返給父進(jìn)程,并關(guān)閉未關(guān)閉的文獻(xiàn)。此
函數(shù)調(diào)用后不會(huì)返回,并且會(huì)傳遞SIGCHLD信號(hào)給父進(jìn)程,父進(jìn)程可以由wait函數(shù)取得子進(jìn)
程結(jié)束狀態(tài)。
附加說(shuō)明
_exit()不會(huì)解決標(biāo)準(zhǔn)DO緩沖區(qū),如要更新緩沖區(qū)請(qǐng)使用exit()。
8、vfork(建立一個(gè)新的進(jìn)程)
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1pid_tvfork(void);
函數(shù)說(shuō)明
vfork()會(huì)產(chǎn)生一個(gè)新的子進(jìn)程,其子進(jìn)程會(huì)復(fù)制父進(jìn)程的數(shù)據(jù)與堆棧空間,并繼承父進(jìn)程的用
戶(hù)代碼.組代碼.環(huán)境變量、已打開(kāi)的文獻(xiàn)代碼、工作目最和資源限制等.Linux使用copy-on-
write(COW)技術(shù),只有當(dāng)其中一進(jìn)程試圖修改欲復(fù)制的空間時(shí)才會(huì)做真正的復(fù)制動(dòng)作,由于這
些繼承的信息是復(fù)制而來(lái),并非指相同的內(nèi)存空間,因此「進(jìn)程對(duì)這些變量的修改和父進(jìn)程并
不會(huì)同步。此外,子進(jìn)程不會(huì)繼承父進(jìn)程的文獻(xiàn)鎖定和未解決的信號(hào)。注意,Linux不保證子
進(jìn)程會(huì)比父進(jìn)程先執(zhí)行或晚執(zhí)行,因此編寫(xiě)程序時(shí)要留意
死鎖或競(jìng)爭(zhēng)條件的發(fā)生。
返回侑
假如vfork()成功則在父進(jìn)程會(huì)返回新建立的子進(jìn)程代碼(PID),而在新建立的子進(jìn)程中則返回
Oo假如vfork失敗則直接返回-1,失敗因素存于errno中。
錯(cuò)誤代碼
EAGAIN內(nèi)存局限性。ENOMEM內(nèi)存局限性,無(wú)法配置核心所需的數(shù)據(jù)結(jié)構(gòu)空間。
9、getpid(取得進(jìn)程辨認(rèn)碼)
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1pid_tgetpid(void);
函數(shù)說(shuō)明
getpid()用來(lái)取得目前進(jìn)程的進(jìn)程辨認(rèn)碼,許多程序運(yùn)用取到的此值來(lái)建立臨時(shí)文獻(xiàn),以避犯
臨時(shí)文獻(xiàn)相同帶來(lái)的問(wèn)題。
返回值
目前進(jìn)程的進(jìn)程辨認(rèn)碼
10、getppid(取得父進(jìn)程的進(jìn)程辨認(rèn)碼)
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1pid_tgetppid(void);
函數(shù)說(shuō)明
getppidO用來(lái)取得目前進(jìn)程的父進(jìn)程辨認(rèn)碼。
返回值
目前進(jìn)程的父進(jìn)程辨認(rèn)碼。
11、wait(等待子進(jìn)程中斷或結(jié)束)
頭文獻(xiàn)
1#inclnde<sys/types.h>
2#include<sys/wait.h>
定義函數(shù)
1pid_twait(int*status);
函數(shù)說(shuō)明
wait。會(huì)暫時(shí)停止目前進(jìn)程的執(zhí)行,直到有信號(hào)來(lái)到或子進(jìn)程結(jié)束。假如在調(diào)用wait。時(shí)子進(jìn)程
已經(jīng)結(jié)束,則wait()會(huì)立即返回子進(jìn)程結(jié)束狀態(tài)值。子進(jìn)程的結(jié)束狀態(tài)值會(huì)由參數(shù)status返回,
而子進(jìn)程的進(jìn)程辨認(rèn)碼也會(huì)一快返回。假如不在意結(jié)束狀態(tài)值,則
參數(shù)
status可以設(shè)成NULLo子進(jìn)程的結(jié)束狀態(tài)值請(qǐng)參考waitpid()o
返回值
假如執(zhí)行成功則返回子進(jìn)程辨認(rèn)碼(PID),假如有錯(cuò)誤發(fā)生則返回-1.失敗因素存于erm。中。
12、waitpid(等待子進(jìn)程中斷或結(jié)束)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/wait.h>
定義函數(shù)
1pid_twaitpid(pid_tpid,int*status,intoptions);
函數(shù)說(shuō)明
waiipid。會(huì)暫時(shí)停止目前進(jìn)程的執(zhí)行,直到有信號(hào)來(lái)到或子進(jìn)程結(jié)束。假如在調(diào)用wail。時(shí)子進(jìn)
程已經(jīng)結(jié)束,則wait。會(huì)立即返問(wèn)了?進(jìn)程結(jié)束狀態(tài)值。子逝程的結(jié)束狀態(tài)值會(huì)由參數(shù)status返
回,而子進(jìn)程的進(jìn)程辨認(rèn)碼也會(huì)一快返回。假如不在意結(jié)災(zāi)狀態(tài)值,則參數(shù)status可以設(shè)成
NULL。參數(shù)pid為欲等待的了進(jìn)程辨認(rèn)碼,其他數(shù)值意義如下;
pid<-l等待進(jìn)程組辨認(rèn)碼為pid絕對(duì)值的任何子進(jìn)程。
pid=-l等待任何子進(jìn)程,相稱(chēng)于wait。。
pid=O等待進(jìn)程組辨認(rèn)碼與目前進(jìn)程相同的任何子進(jìn)程。
pid>0等待任何子進(jìn)程辨認(rèn)碼為pid的子進(jìn)程。
參數(shù)option可認(rèn)為0或下面的OR組合
WNOHANG假如沒(méi)有任何已經(jīng)結(jié)束的了?進(jìn)程則立即返回,不予以等待。
WUNTRACED假如子進(jìn)程進(jìn)入暫停執(zhí)行情況則立即返回,但結(jié)束狀態(tài)不予以理睬。
子進(jìn)程的結(jié)束狀態(tài)返回后存于status,底下有幾個(gè)宏可判別結(jié)束情況
WIFEXITED(status)假如子進(jìn)程正常結(jié)束:則為非0值。
WEXITSTATUS(status)取得子進(jìn)程exit。返回的結(jié)束代碼,一般會(huì)先用WIFEXITED來(lái)判斷是否
正常結(jié)束才干使用此宏。
WIFSIGNALED(sunus)假如子進(jìn)程是由于信號(hào)而結(jié)束則此宏值為真
WTERMSIG(slatus)取得子進(jìn)程因信號(hào)而中止的信號(hào)代碼,一般會(huì)先用WIFSIGNALED來(lái)判斷
后才使用此宏。
WIFSTOPPED(status)假如子進(jìn)程處在暫停執(zhí)行情況則此宏值為真。一般只有使用
WUNTRACED時(shí)才會(huì)有此情況。
WSTOPSIG(status)取得引發(fā)子進(jìn)程暫停的信號(hào)代碼,一般會(huì)先用WIFSTOPPED來(lái)判斷后才使
用此宏。
返回值
假如執(zhí)行成功則返回子進(jìn)程辨認(rèn)碼(PID),假如有錯(cuò)誤發(fā)生則返回-1。失敗因素存于errn。中。
(四)信號(hào)解決篇
1、sigaction(查詢(xún)或設(shè)立信號(hào)解決方式)
頭文獻(xiàn)
1#include<signal.h>
定義函數(shù)
1intsigaction(intsignum,conststructsigaction*act.structsigaction*oldact);
函數(shù)說(shuō)明
sigaclion。會(huì)依參數(shù)signum指定的信號(hào)編號(hào)來(lái)設(shè)立該信號(hào)的解決函數(shù)。參數(shù)signum可以指定
SIGKILL和SIGSTOP以外的所有信號(hào)。
如參數(shù)結(jié)構(gòu)sigaction定義如下
囪
1structsigaction
2{
3void(*sa_handler)(int);
4sigset_tsa_mask;
5intsa_flags;
6void(*sa_restorer)(void);
7)
回
sa_handler此參數(shù)和signal。的參數(shù)handler相同,代表新的信號(hào)解決函數(shù),其他意義請(qǐng)參考
signal。。
sa_mask用來(lái)設(shè)立在解決該信號(hào)時(shí)暫時(shí)將sa_mask指定的信號(hào)擱置。
sa_restorer此參數(shù)沒(méi)有使用。
用來(lái)設(shè)立信號(hào)解決的其他相關(guān)操作,下列的數(shù)值可用。
OR運(yùn)算(D組合
A.NOCLDSTOP:假如參數(shù)signum為SIGCHLD,則當(dāng)子進(jìn)程暫停時(shí)并不會(huì)告知父進(jìn)程
SA_ONESHOT/SA_RESETHAND:當(dāng)調(diào)用新的信號(hào)解決函數(shù)前,將此信號(hào)解決方式改為系統(tǒng)預(yù)
設(shè)的方式。
SA_RESTART:被信號(hào)中斷的系統(tǒng)調(diào)用會(huì)自行重啟
SA_NOMASK/SA_NODEFER:在解決此信號(hào)未結(jié)束前不理睬此信號(hào)的再次到來(lái)。
假如參數(shù)oldact不是NULL指針,則本來(lái)的信號(hào)解決方式會(huì)由此結(jié)構(gòu)sigaction返回。
返回值
執(zhí)行成功則返回0,假如有錯(cuò)誤則返回-1。
錯(cuò)誤代碼
EINVAL參數(shù)signum不合法,或是企圖攔截SIGKILL/SIGSTOPSIGKILL信號(hào)
EFAULT參數(shù)act,oldaci指針地址無(wú)法存取。
EINTR此調(diào)用被中斷
2、sigaddset(增長(zhǎng)一個(gè)信號(hào)至信號(hào)集)
頭文獻(xiàn)
1#include<signal.h>
定義函數(shù)
1intsigaddset(sigset_t^set,intsignum);
函數(shù)說(shuō)明
sigaddsel。用來(lái)將參數(shù)signum代表的信號(hào)加入至參數(shù)set信號(hào)集里。
返回值
執(zhí)行成功則返回0,假如有錯(cuò)誤則返回-1。
錯(cuò)誤代碼
EFAULT參數(shù)set指針地址無(wú)法存取
EINVAL參數(shù)signum非合法的信號(hào)編號(hào)
3、sigdelset(從信號(hào)集里刪除一個(gè)信號(hào))
頭文獻(xiàn)
1#inckide<signal.h>
定義函數(shù)
Iintsigdeisel(sigset_t*set,intsignum);
函數(shù)說(shuō)明
sigdelset。用來(lái)將參數(shù)signum代表的信號(hào)從參數(shù)set信號(hào)集里刪除。
返回值
執(zhí)行成功則返回0,假如有錯(cuò)誤則返回-1。
錯(cuò)誤代碼
EFAULT參數(shù)set指針地址無(wú)法存取
EINVAL參數(shù)signum非合法的信號(hào)編號(hào)
4、sigcmptysct(初始化信號(hào)集)
頭文獻(xiàn)
1#include<signaLh>
定義函數(shù)
1intsigemptyset(sigset_t*set);
函數(shù)說(shuō)明
sigempiysei()用來(lái)將參數(shù)set信號(hào)集初始化并清空。
返回值
執(zhí)行成功則返回0,假如有錯(cuò)誤則返回-1。
錯(cuò)誤代碼
EFAULT參數(shù)set指針地址無(wú)法存取
5、sigfillset(將所有信號(hào)加入至信號(hào)集)
頭文獻(xiàn)
1#include<signal.h>
定義函數(shù)
1intsigfillset(sigset_t*set);
函數(shù)說(shuō)明
sigfillsel。用來(lái)將參數(shù)sei信號(hào)集初始化,然后把所有的信號(hào)加入到此信號(hào)集里。
返回值
執(zhí)行成功則返回0,假如有錯(cuò)誤則返回-1。
附加說(shuō)明
EFAULT參數(shù)set指針地址無(wú)法存取
6、sigismember(測(cè)試某個(gè)信號(hào)是否已加入至信號(hào)集里)
頭文獻(xiàn)
1#include<signal.h>
定義函數(shù)
1intsigismember(constsigset_t*set,intsignum);
函數(shù)說(shuō)明
sigismember。用來(lái)測(cè)試參數(shù)signum代表的信號(hào)是否已加入至參數(shù)set信號(hào)集里。假如信號(hào)集里
已有該信號(hào)則返回1,否則返問(wèn)0。
返回值
信號(hào)集已有該信號(hào)則返回1,沒(méi)有則返回0。假如有錯(cuò)誤則返回-1。
錯(cuò)誤代碼
EFAULT參數(shù)set指針地址無(wú)法存取
EINVAL參數(shù)signum非合法的信號(hào)編號(hào)
7、signal(設(shè)立信號(hào)解決方式)
頭文獻(xiàn)
1#include<signal.h>
定義函數(shù)
1void(*signal(intsignum,void(*handler)(int)))(int);
函數(shù)說(shuō)明
signal。會(huì)依參數(shù)signum指定的信號(hào)編號(hào)來(lái)設(shè)立該信號(hào)的解決函數(shù)。當(dāng)指定的信號(hào)到達(dá)時(shí)就會(huì)跳
轉(zhuǎn)到參數(shù)handler指定的函數(shù)執(zhí)行。假如
參數(shù)handler不是函數(shù)指針,則必須是下列兩個(gè)常數(shù)之一:
SIGJGN忽略參數(shù)signum指定的信號(hào)。
SIG_DFL將參數(shù)signum指定的信號(hào)重設(shè)為核心預(yù)設(shè)的信號(hào)解決方式。
關(guān)干信號(hào)的編號(hào)和說(shuō)明,請(qǐng)參考附錄D
返回值
返回先前的信號(hào)解決函數(shù)指針,假如有錯(cuò)誤則返回SIG_ERR(-1).
附加說(shuō)明
在信號(hào)發(fā)生跳轉(zhuǎn)到自定的handler解決函數(shù)執(zhí)行后,系統(tǒng)會(huì)自動(dòng)將此解決函數(shù)換P1本來(lái)系統(tǒng)預(yù)設(shè)
的解決方式,假如要改變此操作請(qǐng)改用
sigaction()o
8、sleep(讓進(jìn)程暫停執(zhí)行一段時(shí)間)
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1unsignedintsleep(unsignedintseconds);
函數(shù)說(shuō)明
sleep。會(huì)令目前的進(jìn)程暫停,直到達(dá)成參數(shù)seconds所指定的時(shí)間,或是被信號(hào)所中斷。
返回值
若進(jìn)程暫停到參數(shù)seconds所指定的時(shí)間則返回0,若有信號(hào)中斷則返回剩余秒數(shù)。
9、perror(打印犯錯(cuò)誤因素信息字符串)
頭文獻(xiàn)
1#include<stdio.h>
定義函數(shù)
1voidperror(constchar*s);
函數(shù)說(shuō)明
perror()用來(lái)將上一個(gè)函數(shù)發(fā)生錯(cuò)誤的因素輸出到標(biāo)準(zhǔn)錯(cuò)誤(stderr)。參數(shù)s所指的字符串會(huì)先打
印出,后面再加上錯(cuò)誤因素字符串。此
錯(cuò)誤因素依照全局變量errno的值來(lái)決定要輸出的字符串。
返回值
10、mkfifo(建立具名管道)
頭文獻(xiàn)
1#inckide<sys/types.h>
2#include<sys/stat.h>
定義函數(shù)
1intmkfifo(conslchar*pathname,mode_tmode);
函數(shù)說(shuō)明
mkfifo。會(huì)依參數(shù)pathname建立特殊的FIFO文獻(xiàn),該文獻(xiàn)必須不存在,而參數(shù)mode為該文獻(xiàn)
的權(quán)限(mode%~umask),因此umask值也會(huì)
影響到FIFO文獻(xiàn)的權(quán)限。Mkfifo。建立的FIFO文獻(xiàn)其他進(jìn)程都可以用讀寫(xiě)一般文獻(xiàn)的方式存
取。當(dāng)使用open()來(lái)打開(kāi)FIFO文獻(xiàn)時(shí),
O_NONBLOCK旗標(biāo)會(huì)有影響
1、當(dāng)使用O_NONBLOCK旗標(biāo)時(shí),打開(kāi)FIFO文獻(xiàn)來(lái)讀取的操作會(huì)立刻返回,但是若還沒(méi)有其
他進(jìn)程打開(kāi)FIFO文獻(xiàn)來(lái)讀取,則寫(xiě)入的操作會(huì)
返回ENXIO錯(cuò)誤代碼。
2、沒(méi)有使用O_NONBLOCK旗標(biāo)時(shí),打開(kāi)FIFO來(lái)讀取的操作會(huì)等到其他進(jìn)程打開(kāi)FIFO文獻(xiàn)
來(lái)寫(xiě)入才正常返回。同樣地,打開(kāi)FIFO文獻(xiàn)來(lái)寫(xiě)
入的操作會(huì)等到其他進(jìn)程打開(kāi)FIFO文獻(xiàn)來(lái)讀取后才正常返回。
返回值
若成功則返回0,否則返回-1,錯(cuò)誤因素存于errn。中。
錯(cuò)誤代碼
EACCESS參數(shù)pathname所指定的目錄途徑無(wú)可執(zhí)行的權(quán)限
EEXIST參數(shù)pathname所指定的文獻(xiàn)已存在。
ENAMETOOLONG參數(shù)pathname的途徑名稱(chēng)太長(zhǎng)。
ENOENT參數(shù)pathname包含的目錄不存在
ENOSPC文獻(xiàn)系統(tǒng)的剩余空間局限性
ENOTDIR參數(shù)pathname途徑中的目錄存在但卻非真正的目錄。
EROFS參數(shù)pathname指定的文獻(xiàn)存在于只讀文獻(xiàn)系統(tǒng)內(nèi)。
11、pclose(關(guān)閉管道I/O)
頭文獻(xiàn)
1#includc<stdio.h>
定義函數(shù)
1inipclose(FILE*stream);
函數(shù)說(shuō)明
pclose。用來(lái)關(guān)閉由popen所建立的管道及文獻(xiàn)指針。參數(shù)stream為先前由popen。所返網(wǎng)的文
獻(xiàn)指針。
返回值
返回子進(jìn)程的結(jié)束狀態(tài)。假如有錯(cuò)誤則返回-1,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
ECHILDpclose。無(wú)法取得子進(jìn)程的結(jié)束狀態(tài)。
12、pipe(建立管道)
頭文獻(xiàn)
1#include<unistd.h>
定義函數(shù)
1intpipe(intfiledes[2]);
函數(shù)說(shuō)明
pipe。會(huì)建立管道,并將文獻(xiàn)描述詞由參數(shù)filedes數(shù)組返回。filedes[O]為管道里的讀取端,
filedes⑴則為管道的寫(xiě)入端。
返回值
若成功則返回零,否則返回錯(cuò)誤因素存于errn。中。
錯(cuò)誤代碼
EMFILE進(jìn)程已用完文獻(xiàn)描述詞最大量。
ENFILE系統(tǒng)已無(wú)文獻(xiàn)描述詞可用。
EFAULT參數(shù)filedes數(shù)組地址不合法。
13、popen(建立管道I/O)
頭文獻(xiàn)
1#include<stdio.h>
定義函數(shù)
IFILE*popen(constchar*command,conslchar*type);
函數(shù)說(shuō)明
popen。會(huì)調(diào)用fork。產(chǎn)生子進(jìn)程,然后從子進(jìn)程中調(diào)用/bin/sh-c來(lái)執(zhí)行參數(shù)command的指令。
參數(shù)type可使用“r”代表讀取,“w”代
表寫(xiě)入。依照此type值,popen。會(huì)建立管道連到子進(jìn)程的標(biāo)準(zhǔn)輸出設(shè)備或標(biāo)準(zhǔn)輸入設(shè)備,然后
返回一個(gè)文獻(xiàn)指針。隨后送程便可運(yùn)用此
文獻(xiàn)指針來(lái)讀取子進(jìn)程的輸出設(shè)備或是寫(xiě)入到子進(jìn)程的標(biāo)準(zhǔn)輸入設(shè)備中。此外,所有使用文獻(xiàn)
指針(FILE*)操作的函數(shù)也都可以使用,除
了fclose。以外。
返回值
若成功則返回文獻(xiàn)指針,否則返回NULL,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
EINVAL參數(shù)type不合法。
注意事項(xiàng)
在編寫(xiě)具SUID/SGID權(quán)限的程序時(shí)請(qǐng)盡量避免使用popen(),popen()會(huì)繼承環(huán)境變量,通過(guò)環(huán)
境變量也許會(huì)導(dǎo)致系統(tǒng)安全的問(wèn)題。
(五)接口解決篇
1、accept(接受socket連線)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intaccept(ints,structsockaddr*addr,int*addrlen);
函數(shù)說(shuō)明
accepi。用來(lái)接受參數(shù)s的sockel連線。參數(shù)s的socket必需先經(jīng)bind。、listen。函數(shù)解決過(guò),當(dāng)
有連線進(jìn)來(lái)時(shí)accept。會(huì)返回一個(gè)新的
socket解決代碼,往后的數(shù)據(jù)傳送與讀取就是經(jīng)由新的socket解決,而本來(lái)參數(shù)s的sockel能
繼續(xù)使用accept。來(lái)接受新的連線規(guī)定。連
線成功時(shí),參數(shù)addr所指的結(jié)構(gòu)會(huì)被系統(tǒng)填入遠(yuǎn)程主機(jī)的地址數(shù)據(jù),參數(shù)addrlen為scokaddr
的結(jié)構(gòu)長(zhǎng)度。關(guān)于結(jié)構(gòu)sockaddr的定義請(qǐng)參
考bind()o
返回值
成功則返回新的socket解決代碼,失敗返回-1,錯(cuò)誤因素存于erm。中。
錯(cuò)誤代碼
EBADF參數(shù)s非合法sockel解決代碼。
EFAULT參數(shù)addr指針指向無(wú)法存取的內(nèi)存空間。
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket。
EOPNOTSUPP指定的socket并非SOCK_STREAMo
EPERM防火墻拒絕此連線。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限性。
ENOMEM核心內(nèi)存局限性。
2、bind(對(duì)socket定位)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intbind(intsockfd,structsockaddr*my_addr,intaddrlen);
函數(shù)說(shuō)明
bind。用來(lái)設(shè)立給參數(shù)sockfd的socket一個(gè)名稱(chēng)。此名稱(chēng)由參數(shù)my_addr指向一sockaddr
構(gòu),對(duì)于不同的socketdomain定義了一個(gè)通
用的數(shù)據(jù)結(jié)構(gòu)
1structsockaddr
2{
3unsignedshortintsa_family;
4charsa_data[14];
5};
sa_family為調(diào)用socket()時(shí)的domain參數(shù),即AF_xxxx值。
sa_daia最多使用14個(gè)字符長(zhǎng)度。
此sockaddr結(jié)構(gòu)會(huì)因使用不同的socketdomain而有不同結(jié)構(gòu)定義,例如使用AF_INET
domain,其sockeladdr結(jié)構(gòu)定義便為
國(guó)
1structsocketaddr_in
2{
3unsignedshortintsin_family;
4uint!6_tsin_port;
5structin_addrsin_addr;
6unsignedcharsin_zero[8];
7};
8structin_addr
9{
1()uint32_ts_addr;
H);
5
sin_family即為sa_family
sin_port為使用的port編號(hào)
sin_addr.s_addr為IP地址
sin_zero未使用。
參數(shù)
addrlen為sockaddr的結(jié)構(gòu)長(zhǎng)度。
返回值
成功則返回0,失敗返回-1,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
EBADF參數(shù)sockfd非合法sockcl解決代碼。
EACCESS權(quán)限局限性
ENOTSOCK參數(shù)sockfd為一文獻(xiàn)描述詞,非socketo
3、connect(建立socket連線)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/sockel.h>
定義函數(shù)
1intconnect(intsockfd,structsockaddr*serv_addr,intaddrlen);
函數(shù)說(shuō)明
connect。用來(lái)將參數(shù)sockfd的socket連至參數(shù)serv_addr指定的網(wǎng)絡(luò)地址。結(jié)構(gòu)sockaddr請(qǐng)參考
bind。。參數(shù)addrlen為sockaddr的結(jié)
構(gòu)長(zhǎng)度。
返回值
成功則返回0,失敗返回-1,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
EBADF參數(shù)sockfd非合法socket解決代碼
EFAULT參數(shù)serv_addr指引指向無(wú)法存取的內(nèi)存空間
ENOTSOCK參數(shù)sockfd為一文獻(xiàn)描述詞,非socket。
EISCONN參數(shù)sockfd的socket已是連線狀態(tài)
ECONNREFUSED連線規(guī)定被server端拒絕。
ETIMEDOUT企圖連線的操作超過(guò)限定期間仍未有響應(yīng)。
ENETUNREACH無(wú)法傳送數(shù)據(jù)包至指定的主機(jī)。
EAFNOSUPPORTsockaddr結(jié)構(gòu)的sa_family不對(duì)的。
EALREADYsocket為不可阻斷且先前的連線操作尚未完畢。
4、htonl(將32位主機(jī)字符順序轉(zhuǎn)換成網(wǎng)絡(luò)字符順序)
頭文獻(xiàn)
1#include<netinet/in.h>
定義函數(shù)
1unsignedlonginthtonl(unsignedlonginthostlong);
函數(shù)說(shuō)明
htonl()用來(lái)將參數(shù)指定的32位hosilong轉(zhuǎn)換成網(wǎng)絡(luò)字符順序。
返回值
返回相應(yīng)的網(wǎng)絡(luò)字符順序。
5、htons(將16位主機(jī)字符順序轉(zhuǎn)換成網(wǎng)絡(luò)字符順序)
頭文獻(xiàn)
1#include<netinet/in.h>
定義函數(shù)
1unsignedshortinthtons(unsigncdshortinthostshort);
函數(shù)說(shuō)明
hions()用來(lái)將參數(shù)指定的15位hosishort轉(zhuǎn)換成網(wǎng)絡(luò)字符順序。
返回值
返回相應(yīng)的網(wǎng)絡(luò)字符順序。
6、inejaddr(將網(wǎng)絡(luò)地址轉(zhuǎn)成二進(jìn)制的數(shù)字)
頭文獻(xiàn)
I#incln(ie<sys/socket.h>
2#include<netinet/in.h>
3#include<arpa/inet.h>
定義函數(shù)
1unsignedlongintinct_addr(constchar*cp);
函數(shù)說(shuō)明
inct_addr()用來(lái)將參數(shù)cp所指的網(wǎng)絡(luò)地址字符串轉(zhuǎn)換成網(wǎng)絡(luò)所使用的二進(jìn)制數(shù)字。網(wǎng)絡(luò)地玨字
符串是以數(shù)字和點(diǎn)組成的字符串,例
如:“163.13.132.68”。
返回值
成功則返回相應(yīng)的網(wǎng)絡(luò)二進(jìn)制的數(shù)字,失敗返回-1。
7.inct_aton(將網(wǎng)絡(luò)地址轉(zhuǎn)成網(wǎng)絡(luò)二進(jìn)制的數(shù)字)
頭文獻(xiàn)
1#include<sys/scoket.h>
2#include<netinet/in.h>
3#include<arpa/inel.h>
定義函數(shù)
1intinet_aton(constchar*cp,structin_addr*inp);
函數(shù)說(shuō)明
inejaion。用來(lái)將參數(shù)cp所指的網(wǎng)絡(luò)地址字符串轉(zhuǎn)換成網(wǎng)絡(luò)使用的二進(jìn)制的數(shù)字,然后存于參
數(shù)inp所指的in_addr結(jié)構(gòu)中。
結(jié)構(gòu)in_addr定義如下
structinaddr
unsignedlongints_addr;
};
返回值
成功則返回非。值,失敗則返回0。
8.inet.ntoa(將網(wǎng)絡(luò)二進(jìn)制的數(shù)字轉(zhuǎn)換成網(wǎng)絡(luò)地址)
頭文獻(xiàn)
1#includc<sys/sockct.h>
2#includc<netinet/in.h>
3#include<arpa/inet.h>
定義函數(shù)
1char*inel_ntoa(slructin_addrin);
函數(shù)說(shuō)明
incjntoaO用來(lái)將參數(shù)in所指的網(wǎng)絡(luò)二進(jìn)制的數(shù)字轉(zhuǎn)換成網(wǎng)絡(luò)地址,然后將指向此網(wǎng)絡(luò)地址字
符串的指針?lè)祷亍?/p>
返回值
成功則返回字符串指針,失敗則返回NULLo
9、listen(等待連接)
頭文獻(xiàn)
1#include<sys/socket.h>
定義函數(shù)
1intlisten(ints,intbacklog);
函數(shù)說(shuō)明
listen。用來(lái)等待參數(shù)s的socket連線。參數(shù)backlog指定同時(shí)能解決的最大連接規(guī)定,假如連接
數(shù)目達(dá)此上限則client端將收到
ECONNREFUSED的錯(cuò)誤。Lis【en()并未開(kāi)始接受連線,只是設(shè)立sockel為listen模式,真正接
受client端連線的是accept()o通常lis(en()
會(huì)在socket。,bind。之后調(diào)用,接著才調(diào)用accept。。
返回值
成功則返回0,失敗返回-1,錯(cuò)誤因素存于errn。
附加說(shuō)明
lisien()只合用SOCK.STREAM或SOCK_SEQPACKET的socket類(lèi)型。假如socket為AF_INET
則參數(shù)backlog最大俏可設(shè)至128o
錯(cuò)誤代碼
EBADF參數(shù)sockfd非合法socket解決代碼
EACCESS權(quán)限局限性
EOPNOTSUPP指定的socket并未支援listen模式。
10、nlohl(將32位網(wǎng)絡(luò)字符順序轉(zhuǎn)換成主機(jī)字符順序)
頭文獻(xiàn)
1#include<netinet/in.h>
定義函數(shù)
1unsignedlongintntohl(unsignedlongintnetlong);
函數(shù)說(shuō)明
ntohl。用來(lái)將參數(shù)指定的32位netlong轉(zhuǎn)換成主機(jī)字符順序.
返回值
返回相應(yīng)的主機(jī)字符順序。
11、ntohs(將16位網(wǎng)絡(luò)字符順序轉(zhuǎn)換成主機(jī)字符順序)
頭文獻(xiàn)
I#include<netinet/in.h>
定義函數(shù)
1unsignedshortintntohs(unsignedshortintnetshort);
函數(shù)說(shuō)明
ntohs()用來(lái)將參數(shù)指定的16位netshort轉(zhuǎn)換成主機(jī)字符順序。
返回值
返網(wǎng)相應(yīng)的主機(jī)順序。
12、recv(經(jīng)socket接受數(shù)據(jù))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intrccv(ints,void*buf,intlen,unsignedintflags);
函數(shù)說(shuō)明
recv()用來(lái)接受遠(yuǎn)端主機(jī)經(jīng)指定的socket傳來(lái)的數(shù)據(jù),并把數(shù)據(jù)存到由參數(shù)buf指向的內(nèi)存空
間,參數(shù)len為可接受數(shù)據(jù)的最大長(zhǎng)度。
參數(shù)
tlags一般設(shè)0。其他數(shù)值定義如下:
MSG_OOB接受以out-of-band送出的數(shù)據(jù)。
MSG_PEEK返回來(lái)的數(shù)據(jù)并不會(huì)在系統(tǒng)內(nèi)刪除,假如再調(diào)用recv()會(huì)返回相同的數(shù)據(jù)內(nèi)容.
MSG_WAITALL逼迫接受到len大小的數(shù)據(jù)后才干返回,除非有錯(cuò)誤或信號(hào)產(chǎn)生。
MSG_NOSIGNAL此操作不愿被SIGPIPE信號(hào)中斷返回值成功則返回接受到的字符數(shù),失敗返
回-1,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
EBADF參數(shù)s非合法的socket解決代碼
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket。
EINTR被信號(hào)所中斷
EAGAIN此動(dòng)作會(huì)令進(jìn)程阻斷,但參數(shù)s的socket為不可阻斷
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限性。
EN0MEM核心內(nèi)存局限性
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
13、reevfrom(經(jīng)socket接受數(shù)據(jù))
相關(guān)函數(shù)
recv,recvmsgtsend,sendto,socket
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intrecvfrom(ints,void*buf,intlen,unsignedintflags,structsockaddr*from,int
*fromlen);
函數(shù)說(shuō)明
recv()用來(lái)接受遠(yuǎn)程主機(jī)經(jīng)指定的socket傳來(lái)的數(shù)據(jù),并把數(shù)據(jù)存到由參數(shù)buf指向的內(nèi)存空
間,參數(shù)len為可接受數(shù)據(jù)的最大長(zhǎng)度。參
數(shù)flags一般設(shè)0,其他數(shù)值定義請(qǐng)參考recv()。參數(shù)from用來(lái)指定欲傳送的網(wǎng)絡(luò)地址,結(jié)構(gòu)
sockaddr請(qǐng)參考bind。。參數(shù)fromlen為
sockaddr的結(jié)構(gòu)長(zhǎng)度。
返回值
成功則返回接受到的字符數(shù),失敗則返回-1,錯(cuò)誤因素存于errno中。
錯(cuò)誤代碼
EBADF參數(shù)s非合法的socket解決代碼
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間。
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket。
EINTR被信號(hào)所中斷。
EAGAIN此動(dòng)作會(huì)令進(jìn)程阻斷,但參數(shù)s的socket為不可阻斷。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限性
EN0MEM核心內(nèi)存局限性
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
14、reevmsg(經(jīng)socket接受數(shù)據(jù))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socktet.h>
定義函數(shù)
1intrecvmsg(ints,structmsghdr*msg,unsignedintflags);
函數(shù)說(shuō)明
recvmsgO用來(lái)接受遠(yuǎn)程主機(jī)經(jīng)指定的socket傳來(lái)的數(shù)據(jù)。參數(shù)s為已建立好連線的socket,假
如運(yùn)用UDP協(xié)議則不需通過(guò)連線操作。參
數(shù)msg指向欲連線的數(shù)據(jù)結(jié)構(gòu)內(nèi)容,參數(shù)flags一般設(shè)0,具體描述請(qǐng)參考send。。關(guān)于結(jié)構(gòu)
msghdr的定義請(qǐng)參考sendmsgO。
返回值
成功則返回接受到的字符數(shù),失敗則返回“,錯(cuò)誤因素存于errn。中。
錯(cuò)誤代碼
EBADF參數(shù)s非合法的socket解決代碼。
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket0
EINTR被信號(hào)所中斷。
EAGAIN此操作會(huì)令進(jìn)程阻斷,但參數(shù)s的socket為不可阻斷。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限件
ENOMEM核心內(nèi)存局限性
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
15、send(經(jīng)socket傳送數(shù)據(jù))
頭文獻(xiàn)
I#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intsend(ints,constvoid*msg,intlen,unsignedintfalgs);
函數(shù)說(shuō)明
send。用來(lái)將數(shù)據(jù)由指定的socket傳給對(duì)方主機(jī)。參數(shù)s為已建立好連接的socket0參數(shù)msg指
向欲連線的數(shù)據(jù)內(nèi)容,參數(shù)len則為數(shù)據(jù)長(zhǎng)
度。參數(shù)flags一般設(shè)0,其他數(shù)值定義如下
MSG_OOB傳送的數(shù)據(jù)以cut-of-band送出。
MSG_DONTROUTE取消路由表查詢(xún)
MSG_DONTWAIT設(shè)立為不可阻斷運(yùn)作
MSG_NOSIGNAL此動(dòng)作不愿被SIGPIPE信號(hào)中斷,
返回侑
成功則返回實(shí)際傳送出去的字符數(shù),失敗返回-1。錯(cuò)誤因素存于erm。
錯(cuò)誤代碼
EBADF參數(shù)s非合法的socket解決代碼。
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket
EINTR被信號(hào)所中斷。
EAGAIN此操作會(huì)令進(jìn)程阻斷,但參數(shù)s的socket為不可阻斷。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限性
EN0MEM核心內(nèi)存局限性
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
16、sendmsg(經(jīng)socket傳送數(shù)據(jù))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
Iintsendmsg(ints,conststrcutmsghdr*msg,unsignedintflags);
函數(shù)說(shuō)明
sendmsg。用來(lái)將數(shù)據(jù)由指定的socket傳給對(duì)方主機(jī)。參數(shù),為己建立好連線的socket,假如運(yùn)
用UDP協(xié)議則不需通過(guò)連線操作。參數(shù)msg
指向欲連線的數(shù)據(jù)結(jié)構(gòu)內(nèi)容,參數(shù)flags一般默認(rèn)為0,具體描述請(qǐng)參考send。。
結(jié)構(gòu)msghdr定義如下
1structmsghdr
2{
3void*msg_name;/*Addresstosendto/receivefrom.*/
4socklen_tmsg_namelen;/*Lengthofaddresdata*/
5strcutiovec*msg_iov;/*Vectorofdatatoscnd/rcccivcinto*/
6size_tmsg_iovlen;/*Numberofelementsinthevector*/
7void*msg_control;/*Ancillarydat*/
8size_tmsg_controllen;/*Ancillarydatabufferlength*/
9intmsg_flags;/*Flagsonreceivedmessage*/
10);
回
返回值
成功則返回實(shí)際傳送出去的字符數(shù),失敗返問(wèn)-1,錯(cuò)誤因素存于erm。
錯(cuò)誤代碼
EBADF參數(shù)s非合法的socket解決代碼。
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間
ENOTSOCK參數(shù)s為一文獻(xiàn)描述詞,非socket。
EINTR被信號(hào)所中斷。
EAGAIN此操作會(huì)令進(jìn)程阻斷,但參數(shù)s的socket為不可阻斷。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限性
ENOMEM核心內(nèi)存局限性
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
17、sendto(經(jīng)socket傳送數(shù)據(jù))
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intsendto(ints,constvoid*msg,intlen,unsignedintflags,conststructsockaddr
*to,intlolen);
函數(shù)說(shuō)明
sendtoO用來(lái)將數(shù)據(jù)由指定的socket傳給對(duì)方主機(jī)。參數(shù)s為已建好連線的socket,假如運(yùn)用
UDP協(xié)議則不需通過(guò)連線操作。參數(shù)msg指向
欲在線的數(shù)據(jù)內(nèi)容,參數(shù)flags一般設(shè)0,具體描述請(qǐng)參考send。。參數(shù)2用來(lái)指定欲傳送的網(wǎng)
絡(luò)地址,結(jié)構(gòu)sockaddr請(qǐng)參考bind。。參數(shù)
tolen為sockaddr的結(jié)果長(zhǎng)度。
返回值
成功則返回實(shí)際傳送出去的字符數(shù),失敗返回一1,錯(cuò)誤因素存于erm。中。
錯(cuò)誤代碼
EBADF參數(shù)s非法的socket解決代碼。
EFAULT參數(shù)中有一指針指向無(wú)法存取的內(nèi)存空間。
WNOTSOCKcanshus為一文獻(xiàn)描述詞,非socket。
EINTR被信號(hào)所中斷。
EAGAIN此動(dòng)作會(huì)令進(jìn)程阻斷,但參數(shù)s的sokct為補(bǔ)課阻斷的。
ENOBUFS系統(tǒng)的緩沖內(nèi)存局限件。
EINVAL傳給系統(tǒng)調(diào)用的參數(shù)不對(duì)的。
I8^socket(建立一個(gè)socket通信)
頭文獻(xiàn)
1#include<sys/types.h>
2#include<sys/socket.h>
定義函數(shù)
1intsockct(intdomain,inttype,intprotocol);
函數(shù)說(shuō)明
socket。用來(lái)建立一個(gè)新的socket,也就是向系統(tǒng)注冊(cè),告知系統(tǒng)建立一通信端口。參數(shù)domain
指定使用何種的地址類(lèi)型,完整的定義
^/usr/include/bits/socket.h內(nèi),底下是常見(jiàn)的協(xié)議:
PF_UNIX/PF_LOCAL/AF_UNIX/AF_LOCALUNIX進(jìn)程通信協(xié)議
PF_INET?AF_INETIpv4網(wǎng)絡(luò)協(xié)議
PF_INET6/AF_INET6Ipv6網(wǎng)絡(luò)協(xié)議
PF_IPX/AFJPXIPX-Novell協(xié)議
PF_NETLINK/AF_NETLINK核心用戶(hù)接口裝置
PF_X25/AF_X25ITU-TX.25/ISO-8208協(xié)議
PF_AX25/AF_AX25業(yè)余無(wú)線AX.25協(xié)議
PF_ATMPVC/AF_ATMPVC存取原始ATMPVCs
PF_APPLETALK/AF_APPLETALKappletalk(DDP)協(xié)議
PF_PACKET/AF_PACKET初級(jí)封包接口
參數(shù)
type有下列幾種數(shù)值:
SOCK_STREAM提供雙向連續(xù)且可信賴(lài)的數(shù)據(jù)流,即TCP。支持
OOB機(jī)制,在所有數(shù)據(jù)傳送前必須使用connect。來(lái)建立連線狀態(tài)。
SOCK_DGRAM使用不連續(xù)不可信賴(lài)的數(shù)據(jù)包連接
SOCK_SEQPACKET提供連續(xù)可信賴(lài)的數(shù)據(jù)包連接
SOCK.RAW提供原始網(wǎng)絡(luò)協(xié)議存取
SOCK_RDM提供可信賴(lài)的數(shù)據(jù)包連接
SOCK_PACKET提供和網(wǎng)絡(luò)驅(qū)動(dòng)程序直接通信。
protocol用來(lái)指定socket所使用的傳輸協(xié)議編號(hào),通常此參考不用管它,設(shè)為0即可。
返回值
成功則返回sockel解決代碼,失敗返回-屋
錯(cuò)誤代碼
EPROTONOSUPPORT參數(shù)domain指定的類(lèi)型不支持參數(shù)type或protocol指定的協(xié)議
ENFILE核心內(nèi)存局限性,無(wú)法建立新的socket結(jié)構(gòu)
EMFILE進(jìn)程文獻(xiàn)表溢出,無(wú)法再建立新的socket
EACCESS權(quán)限局限性,無(wú)法建立type或protocol指定的協(xié)議
ENOBUFS/ENOMEM內(nèi)存局限性
EINVAL參數(shù)domain/type/protocol不合法
(六)環(huán)境變量篇
1、getenv(取得環(huán)境變量?jī)?nèi)容)
頭文幀
1#include<stdlib.h>
定義函數(shù)
1char*getenv(constchar*name);
函數(shù)說(shuō)明
geie
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省福州左海置地有限公司招聘筆試真題2024
- 畜牧業(yè)的市場(chǎng)競(jìng)爭(zhēng)力分析考核試卷
- 皮革服裝設(shè)計(jì)中的材質(zhì)對(duì)比與搭配考核試卷
- 突發(fā)性地質(zhì)災(zāi)害應(yīng)急預(yù)案范文(5篇)
- 電子期刊出版發(fā)展考核試卷
- 銷(xiāo)售助理個(gè)人總結(jié)范文(15篇)
- 2025國(guó)際貿(mào)易自我鑒定(5篇)
- 護(hù)士總結(jié)報(bào)告2025(4篇)
- 語(yǔ)文培訓(xùn)心得體會(huì)范文(29篇)
- 摩托車(chē)雨刷器與清洗系統(tǒng)設(shè)計(jì)考核試卷
- 湖南省長(zhǎng)沙市四大名校2024-2025學(xué)年高三2月月考語(yǔ)文試題(原卷版+解析版)
- 中華民族節(jié)日文化知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春云南大學(xué)
- 《政府采購(gòu)管理研究的國(guó)內(nèi)外文獻(xiàn)綜述》5500字
- 糖尿病護(hù)理查房提出問(wèn)題
- 回收設(shè)施布局與優(yōu)化-深度研究
- 2024年國(guó)網(wǎng)浙江省電力有限公司招聘考試真題
- 微專(zhuān)題2 質(zhì)量守恒定律的應(yīng)用(解析版)
- 分析化學(xué)考試題(附參考答案)
- 廣東省廣州市越秀區(qū)2025年中考一模歷史模擬試題(含答案)
- 森林無(wú)人機(jī)滅火技術(shù)集成-深度研究
- 股份轉(zhuǎn)讓協(xié)議模板
評(píng)論
0/150
提交評(píng)論