版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 WINDOWS的系統(tǒng)調(diào)用 API(Application Programming Interface), 應(yīng)用編程接口,其實(shí)就是操作系統(tǒng)留給應(yīng)用程序的一個(gè)調(diào)用接口,應(yīng)用程序通過調(diào)用操作系統(tǒng)的 API 而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動(dòng)作)。Windows API API函數(shù)包含在 Windows系統(tǒng)目錄下動(dòng)態(tài)連接庫文件。Windows API是一套控制Windows的各個(gè)部件的外觀和行為的預(yù)先定義的Windows函數(shù)。用戶的每個(gè)動(dòng)作都會(huì)引發(fā)一個(gè)或幾個(gè)函數(shù)的運(yùn)行以告訴Windows發(fā)生了什么。API函數(shù)包括:網(wǎng)絡(luò)函數(shù)消息函數(shù)文件處理函數(shù)打印函數(shù)文本和字體函數(shù) 菜單函數(shù)位圖運(yùn)算函數(shù)繪圖函數(shù)設(shè)備
2、場(chǎng)景函數(shù)硬件與系統(tǒng)函數(shù)進(jìn)程和線程函數(shù)#includeint main() MessageBox(NULL,First program!,example,MB_OK); return 0; /MessageBox 函數(shù)用于創(chuàng)建、顯示并操作一個(gè)消息對(duì)話框。進(jìn)程的管理控制fork 創(chuàng)建一個(gè)新進(jìn)程 clone 按指定條件創(chuàng)建子進(jìn)程 execve 運(yùn)行可執(zhí)行文件 exit 中止進(jìn)程 _exit 立即中止當(dāng)前進(jìn)程 getdtablesize 進(jìn)程所能打開的最大文件數(shù) getpgid 獲取指定進(jìn)程組標(biāo)識(shí)號(hào) setpgid 設(shè)置指定進(jìn)程組標(biāo)志號(hào) getpgrp 獲取當(dāng)前進(jìn)程組標(biāo)識(shí)號(hào) setpgrp 設(shè)置當(dāng)前進(jìn)
3、程組標(biāo)志號(hào) getpid 獲取進(jìn)程標(biāo)識(shí)號(hào) getppid 獲取父進(jìn)程標(biāo)識(shí)號(hào) getpriority 獲取調(diào)度優(yōu)先級(jí) setpriority 設(shè)置調(diào)度優(yōu)先級(jí) modify_ldt 讀寫進(jìn)程的本地描述表 nanosleep 使進(jìn)程睡眠指定的時(shí)間 nice 改變分時(shí)進(jìn)程的優(yōu)先級(jí) pause 掛起進(jìn)程,等待信號(hào) personality 設(shè)置進(jìn)程運(yùn)行域 prctl 對(duì)進(jìn)程進(jìn)行特定操作 ptrace 進(jìn)程跟蹤 sched_get_priority_max 取得靜態(tài)優(yōu)先級(jí)的上限 sched_get_priority_min 取得靜態(tài)優(yōu)先級(jí)的下限 sched_getparam 取得進(jìn)程的調(diào)度參數(shù) sched_
4、getscheduler 取得指定進(jìn)程的調(diào)度策略 sched_rr_get_interval 取得按RR算法調(diào)度的實(shí)時(shí)進(jìn)程的時(shí)間片長(zhǎng)度 sched_setparam 設(shè)置進(jìn)程的調(diào)度參數(shù) sched_setscheduler 設(shè)置指定進(jìn)程的調(diào)度策略和參數(shù) sched_yield 進(jìn)程主動(dòng)讓出處理器,并將自己等候調(diào)度隊(duì)列隊(duì)尾 vfork 創(chuàng)建一個(gè)子進(jìn)程,以供執(zhí)行新程序,常與execve等同時(shí)使用 wait 等待子進(jìn)程終止 wait3 參見wait waitpid 等待指定子進(jìn)程終止 wait4 參見waitpid capget 獲取進(jìn)程權(quán)限 capset 設(shè)置進(jìn)程權(quán)限 getsid 獲取會(huì)晤標(biāo)識(shí)號(hào)
5、 setsid 設(shè)置會(huì)晤標(biāo)識(shí)號(hào) 返回值:為了區(qū)分父、子進(jìn)程,fork給兩個(gè)進(jìn)程返回不同的值。 如果調(diào)用成功 對(duì)于父進(jìn)程,fork()返回新創(chuàng)建子進(jìn) 程的進(jìn)程標(biāo)識(shí)符; 對(duì)于子進(jìn)程,fork()返回0; 如果調(diào)用失敗 fork()沒有創(chuàng)建子進(jìn)程。返回-1。fork函數(shù)功能:創(chuàng)建一個(gè)新進(jìn)程函數(shù)原型: pid_t fork(void);/*t2.c*/#includeint main()int pid;printf(just 1 process now.n);pid=fork();if(pid=0)printf(i am the child.n);else if(pid0)printf(i am th
6、e parent.n); elseprintf(fork failed.n);printf(program end.n);return 0; 運(yùn)行結(jié)果:taojingubuntu:$ gedit t2.ctaojingubuntu:$ gcc t2.ctaojingubuntu:$ ./a.outjust 1 process now.i am the gram end.taojingubuntu:$ i am the gram end./*t3.c*/#includeint main()int count=0;int pid;pid=fork();if(p
7、id0)printf(parent process:%dn,+count);if(pid=0)printf(child process:%dn,+count);return 0; 運(yùn)行結(jié)果: taojingubuntu:$ gedit t3.c taojingubuntu:$ gcc t3.c -o b.out taojingubuntu:$ ./b.out parent process:1 taojingubuntu:$ child process:1 vfork的作用與fork基本相同,和fork調(diào)用不同的是,調(diào)用vfork對(duì)于父子進(jìn)程的執(zhí)行次序有所限制,調(diào)用vfork時(shí),父進(jìn)程被掛起,子
8、進(jìn)程運(yùn)行至調(diào)用exit時(shí)解除這種狀態(tài)。因此,總是子進(jìn)程先返回。 /*t4.c*/#include#includeint main()int pid;pid=vfork();if(pid0)printf(Parent process is printing.n);if(pid=0)sleep(5);printf(Child process is printing.n);exit(0);return 0;運(yùn)行結(jié)果:taojingubuntu:$ gedit t4.ctaojingubuntu:$ gcc t4.c -o c.outtaojingubuntu:$ ./c.outChild proce
9、ss is printing.Parent process is printing.getpid函數(shù)功能: 返回進(jìn)程的PID。函數(shù)原型: pid _t getpid(void );/*t5.c*/#includeint main(int argc,char *argv )int pid;printf(1.%s:BEGINn,argv0);pid=fork();if(pid0)printf(2.parent,pid=%dn,pid);sleep(10);if(pid=0)printf(3.child,pid=%dn,pid);printf(4.my pid is %d,parents pid i
10、s %dn,getpid(),getppid();printf(5.%s:ENDn,argv0);return 0;運(yùn)行結(jié)果:taojingubuntu:$ gcc t5.c -o d.outtaojingubuntu:$ ./d.out1./d.out:BEGIN2.parent,pid=37883.child,pid=04.my pid is 3788,parents pid is 37875./d.out:END4.my pid is 3787,parents pid is 25555./d.out:END exit函數(shù)功能: 終止正在運(yùn)行的程序。函數(shù)原型: void exit(int
11、status);說明: 該函數(shù)將回收與進(jìn)程相關(guān)的各種內(nèi)核數(shù)據(jù)結(jié) 構(gòu),把進(jìn)程的狀態(tài)置為TASK_ZOMBIE。 參數(shù)status用來傳遞進(jìn)程結(jié)束時(shí)的狀態(tài)。 一般來說,0表示沒有意外的正常結(jié)束; 其他數(shù)值表示進(jìn)程出現(xiàn)了錯(cuò)誤,非正常 結(jié)束。注意: 一個(gè)進(jìn)程調(diào)用了exit之后,該進(jìn)程并非馬上消失,而是變?yōu)榻┦瑺顟B(tài),它還保留了PCB等資源沒有釋放等待父進(jìn)程調(diào)用wait()對(duì)其資源進(jìn)行回收。wait函數(shù)功能: 等待當(dāng)前進(jìn)程的子進(jìn)程終止,獲取子進(jìn)程終止的狀態(tài) 并回收僵尸子進(jìn)程占用的系統(tǒng)資源。函數(shù)原型: pid_t wait(int *status);說明: 函數(shù)的返回值是已終止的子進(jìn)程的PID號(hào)。 stat
12、us是子進(jìn)程結(jié)束時(shí),返回的進(jìn)程終止?fàn)顟B(tài)信息的地址。 調(diào)用形式可以簡(jiǎn)寫為wait(0),不需要返回狀態(tài)及進(jìn)程的PID。 wait()常用來控制父、子進(jìn)程的同步。/*t7.c*/#include#includeint main()int pc,pr;pc=fork();if(pc=0) printf(the pid of child process:%dn,getpid(); sleep(10); if(pc0) pr=wait(0); printf(I chached a child process with pid of %dn,pr);exit(0);return 0;運(yùn)行結(jié)果:taojin
13、gubuntu:$ gcc t7.c -o f.outtaojingubuntu:$ ./f.outthe pid of child process:3657I chached a child process with pid of 3657說明: 在父進(jìn)程中使用系統(tǒng)調(diào)用wait暫停父進(jìn)程的執(zhí)行,使之處于阻塞狀態(tài)。進(jìn)入阻塞隊(duì)列。一旦子進(jìn)程執(zhí)行畢,會(huì)產(chǎn)生一個(gè)終止?fàn)顟B(tài)信息,處于阻塞狀態(tài)的父進(jìn)程便會(huì)被系統(tǒng)喚醒,父進(jìn)程提取子進(jìn)程的終止?fàn)顟B(tài)信息,從而繼續(xù)執(zhí)行。 當(dāng)參數(shù)status不為NULL時(shí),子進(jìn)程的結(jié)束信息放在status中,利用這個(gè)狀態(tài)字可以了解子程序結(jié)束的原因。在中定義了幾個(gè)宏: WIFEXIT
14、ED(status):如果進(jìn)程正常終止,則為真??梢杂肳EXITSTATUS (status)獲得子進(jìn)程的返回碼。 WIFSIGNALED(status):如果進(jìn)程異常終止,則為真??梢杂肳TERMSIG (status)獲得子進(jìn)程被殺的信號(hào)值。/*t8.c*/#include#includeint main()int pid,stat;pid=fork();if(pid0)printf(Child process is %dn,pid);pid=wait(&stat);printf(Child process %d endsn,pid);if(WIFEXITED(stat)printf(Ex
15、it code is %dn,WEXITSTATUS(stat);if(WIFSIGNALED(stat)printf(Killed by a signal %dn,WTERMSIG(stat);if(pid=0)printf(I am the child process.n);exit(1);printf(Bye!n);return 0;運(yùn)行結(jié)果:taojingubuntu:$ gcc t8.c -o g.outtaojingubuntu:$ ./g.outChild process is 3730I am the child process.Child process 3730 endsE
16、xit code is 1Bye! 當(dāng)一個(gè)管道建立后,將獲得兩個(gè)文件描述符,分別用于對(duì)管道讀取和寫入,通常將其稱為管道的寫入端和管道的讀取端。 管道是一種特殊文件,用戶在使用中完全可以像讀寫普通文件一樣使用read和write對(duì)管道進(jìn)行讀寫。 pipe函數(shù)功能:創(chuàng)建一個(gè)管道。函數(shù)原型:int pipe(int filedes2);參數(shù): filedes2:包括2個(gè)整數(shù)的數(shù)組,存放 打開文件描述符。 filedes0:存放管道讀端文件描符; filedes1:存放管道寫端文件描述符。讀管道規(guī)則: 關(guān)閉管道的寫端:close (fd1); 讀出:read(fd0, buf, size); 讀出后關(guān)
17、閉管道的讀端:close(fd0);寫管道規(guī)則: 關(guān)閉管道的讀端:close(fd0); 寫入:write(fd1, buf, size); 寫入后關(guān)閉管道的寫端:close (fd1);/*t9.c*/#include#includeint main()int fd2,pid;char str50;pipe(fd);pid=fork();if(pid0)close(fd0);write(fd1,Good morning!,30);printf(parent,write to pipe successfully!n);wait(0);if(pid=0)close(fd1);sleep(10);read(fd0,str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 21551.4-2024家用和類似用途電器的抗菌、除菌、凈化功能第4部分:電冰箱的特殊要求
- 2024年道路危險(xiǎn)貨物運(yùn)輸安全協(xié)議范本3篇
- 2024建筑工程勞務(wù)承包合同協(xié)議書范本
- 2024版消防器材供貨合同
- 2024燃?xì)夤こ檀昂笃诰S護(hù)服務(wù)合同3篇
- 2025年度新型城鎮(zhèn)化建設(shè)項(xiàng)目合作合同3篇
- 2024版水泥購銷合同參考樣本
- 二零二五年度租賃合同稅費(fèi)承擔(dān)范本6篇
- 二零二五年度班主任新手跟崗學(xué)習(xí)與技能培訓(xùn)合同3篇
- 二零二五版房地產(chǎn)交易兜底協(xié)議范本3篇
- 人教版(2025新版)七年級(jí)下冊(cè)英語:寒假課內(nèi)預(yù)習(xí)重點(diǎn)知識(shí)默寫練習(xí)
- 藝術(shù)品捐贈(zèng)協(xié)議
- 網(wǎng)絡(luò)安全系統(tǒng)運(yùn)維方案
- 2024年標(biāo)準(zhǔn)溝渠回填工程承包協(xié)議版B版
- 2024年專用:物業(yè)安全管理協(xié)議3篇
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級(jí)下冊(cè)+
- 《政府采購業(yè)務(wù)培訓(xùn)》課件
- 《醫(yī)療器械召回管理辦法》培訓(xùn)2024
- 網(wǎng)絡(luò)安全培訓(xùn)內(nèi)容課件
- 通信線路維護(hù)安全培訓(xùn)
- 專業(yè)微信小程序開發(fā)協(xié)議范例版
評(píng)論
0/150
提交評(píng)論