版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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、場景函數(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í)間片長度 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)用形式可以簡寫為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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度辦公設(shè)備維修與升級(jí)服務(wù)合同5篇
- 二零二五年度汽車租賃合同租賃物維修保養(yǎng)費(fèi)用承擔(dān)協(xié)議2篇
- 2025版風(fēng)力發(fā)電葉片設(shè)計(jì)與制造合同范本3篇
- 二零二五年度安全施工安全管理人員考核合同
- 二零二五年度數(shù)字貨幣研發(fā)團(tuán)隊(duì)勞動(dòng)合同2篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場店鋪承包管理協(xié)議3篇
- 二零二五年度代購合作協(xié)議范本匯編6篇
- 海南衛(wèi)生健康職業(yè)學(xué)院《學(xué)前兒童行為觀察與分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 邯鄲科技職業(yè)學(xué)院《GIS氣象應(yīng)用與開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度智慧社區(qū)建設(shè)政府采購項(xiàng)目委托代理協(xié)議書3篇
- 2025年湖南出版中南傳媒招聘筆試參考題庫含答案解析
- 2025年度商用廚房油煙機(jī)安裝與維護(hù)服務(wù)合同范本3篇
- 2024年03月恒豐銀行2024年春季招考畢業(yè)生筆試歷年參考題庫附帶答案詳解
- 網(wǎng)絡(luò)安全系統(tǒng)運(yùn)維方案
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之14:“6策劃-6.3變更的策劃”(雷澤佳編制-2025B0)
- 2024年特厚板行業(yè)現(xiàn)狀分析:中國特厚板市場占總銷售量45.01%
- 2025年中國地質(zhì)調(diào)查局烏魯木齊自然資源綜合調(diào)查中心招聘19人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 中國兒童重癥監(jiān)護(hù)病房鎮(zhèn)痛和鎮(zhèn)靜治療專家共識(shí)2024解讀
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級(jí)下冊(cè)+
- 12G614-1砌體填充墻結(jié)構(gòu)構(gòu)造
- 10KV供配電工程施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論