OS9(上機(jī)-接口)教學(xué)課件_第1頁
OS9(上機(jī)-接口)教學(xué)課件_第2頁
OS9(上機(jī)-接口)教學(xué)課件_第3頁
OS9(上機(jī)-接口)教學(xué)課件_第4頁
OS9(上機(jī)-接口)教學(xué)課件_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

OS9(上機(jī)-接口)26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個籠子,然后把自己關(guān)在里面。——博萊索27、法律如果不講道理,即使延續(xù)時間再長,也還是沒有制約力的。——愛·科克28、好法律是由壞風(fēng)俗創(chuàng)造出來的。——馬克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由。——洛克30、風(fēng)俗可以造就法律,也可以廢除法律。——塞·約翰遜OS9(上機(jī)-接口)OS9(上機(jī)-接口)26、我們像鷹一樣,生來就是自由的,但是為了生存,我們不得不為自己編織一個籠子,然后把自己關(guān)在里面?!┤R索27、法律如果不講道理,即使延續(xù)時間再長,也還是沒有制約力的?!獝邸た瓶?8、好法律是由壞風(fēng)俗創(chuàng)造出來的?!R克羅維烏斯29、在一切能夠接受法律支配的人類的狀態(tài)中,哪里沒有法律,那里就沒有自由?!蹇?0、風(fēng)俗可以造就法律,也可以廢除法律。——塞·約翰遜上機(jī)安排(3-8周,共6次)3、5、7周周五6-7節(jié): 計科0901-03 北八機(jī)房 計科0904-05 北二機(jī)房4、6、8周周五6-7節(jié): 計科0901-03 北二機(jī)房 計科0904-05 北八機(jī)房上機(jī)內(nèi)容:1.linux基本使用2.linux下進(jìn)程相關(guān)程序設(shè)計3.windows下進(jìn)程相關(guān)程序設(shè)計4.銀行家算法5.存儲管理,各種調(diào)度算法比較6.文件系統(tǒng)上機(jī)內(nèi)容將在----作業(yè)管理中布置GPL(GeneralpublicLicense)軟件--通用公共許可軟件。此類軟件的開發(fā)不是為了經(jīng)濟(jì)目的,而是不斷開發(fā)并傳播新的軟件,并讓每個人都能獲得、擁有。該類軟件遵循一定的規(guī)則: 1.

傳播者不能限制購買軟件的用戶自由權(quán)。即如果用戶買了一套GPL軟件,就可以免費(fèi)復(fù)制和傳播或自己出售。 2.

傳播者必須清楚告訴用戶該軟件屬于GPL軟件。 3.

傳播者必須免費(fèi)提供軟件的完整源代碼。這樣為用戶提供了修改的條件。允許個人或組織為盈利而傳播,獲得利潤。但不允許剝奪購買者的傳播能力。POSIXUNIX發(fā)展過程中,出現(xiàn)了許多變種(BSD,SystemV等)。為統(tǒng)一標(biāo)準(zhǔn),電氣和電子工程師協(xié)會(IEEE)開發(fā)了POSIX標(biāo)準(zhǔn)(PortableOperatingSystemInterfaceforUNIX):這個標(biāo)準(zhǔn)定義了應(yīng)用程序和操作系統(tǒng)之間的一個接口。目的是為了提高UNIX環(huán)境下應(yīng)用程序的可移植性。從理論上說,POSIX標(biāo)準(zhǔn)代碼很容易移植到任何遵守POSIX的操作系統(tǒng)中。這樣的操作系統(tǒng)包括大部分版本的UNIX

今天,POSIX并不局限于UNIXLinux與GNU計劃LinusTorvaldsFreesoftwareFSF(Freesoftwarefoundation)自由軟件基金會

GNU計劃GPL(GeneralPublicLicense)通用公共許可證OpenSourceGNU(GNU’sNOTUnix)TheGNUProjectwaslaunchedin1984todevelopacompleteUnix-likeoperatingsystemwhichisfreesoftware:theGNUsystem.(GNUisarecursiveacronymfor"GNU'sNotUnix";itispronounced"guh-NEW".)VariantsoftheGNUoperatingsystem,whichusethekernelLinux,arenowwidelyused;thoughthesesystemsareoftenreferredtoas"Linux",theyaremoreaccuratelycalledGNU/Linuxsystems.FSFistheprincipalorganizationalsponsoroftheGNUProject.二、關(guān)于linux的一些名詞 由一些團(tuán)體或企業(yè)開發(fā),主要進(jìn)行集成工作:將Linux內(nèi)核與一些支持Linux的工具和應(yīng)用程序集成,制成安裝光盤發(fā)布。 較知名的有:SlackWare、RedHat、Debain、Mandrake、SuSE、Xlinux、TurboLinux、BluePoint、RedFlag、Xterm TurboLinux是一家美國公司建立的發(fā)行版,早期其致力于Linux的國際化工作,它的中文版,是最早的成熟中文Linux發(fā)行版.

RedHatLinux是最成熟的一種Linux發(fā)行版,其無論在銷售還是裝機(jī)量上都是市場上的老大。 Redhat自9.0以后,不再發(fā)布桌面版,而是與開源社區(qū)合作,于是就有了Fedoracore這個Linux發(fā)行版。Fedora可以說是Redhat桌面版本的延續(xù),只不過是與開源社區(qū)合作1、Linux的發(fā)行版本2、發(fā)行版版本號和內(nèi)核版本如:RedHat9是發(fā)行版的版本號,不同的發(fā)行商不同。而Linux2.4則是指Linux內(nèi)核的版本。

Linux核心是由linus維護(hù)的,它的版本號一般由二到三個部分組成,例如機(jī)房安裝的是2.4.20:

1)第一個2是主版本號,一般在一個時期內(nèi)比較穩(wěn)定;

2)第二個2是次版本號,如果是偶數(shù),代表是正式版,如果是奇數(shù),代表是開發(fā)過程中的測試版,如在2.4正式出來時,2.3.x就是在開發(fā)者間使用的測試版的版本號;

3)最后一個20是修改號,如2.4.20就是對2.4.19做了一些小的修改而來。

這種特殊的版本命名法是為了便于在Internet上共同開發(fā)而制定的。3、Xwindow在操作系統(tǒng)之上運(yùn)行GUI而不是將它集成進(jìn)操作系統(tǒng)中!這樣做可以允許用戶在不需要時放棄GUI.如:計算機(jī)主要做為一個Web服務(wù)器,沒必要將系統(tǒng)資源浪費(fèi)在并不實(shí)用的GUI上。Linux都集成了Xfree86,窗口化的GUI。4、VC——Virtualconsole虛擬控制臺Linux讓用戶擁有幾個活動的虛擬控制臺,這幾個虛擬控制臺共享物理的控制臺,并通過功能鍵進(jìn)行切換(CTRL+Alt+F1/F2…/F6,CTRL+Alt+F7回到X-window狀態(tài))5、linux是真正的多用戶多任務(wù)Windows2000以前的系統(tǒng)都不是多用戶os,帶sp2補(bǔ)丁的xp和windows2003才支持多用戶的功能6、Linux的徽標(biāo)——tux(一只企鵝)體態(tài)豐盈而容易滿足的水禽可靠、可擴(kuò)展、協(xié)作開發(fā)的操作系統(tǒng)的化身。 LarryEwing應(yīng)Linus之邀設(shè)計完成的三、Linux的文件系統(tǒng)結(jié)構(gòu) Linux的文件系統(tǒng)和Windows文件系統(tǒng)有很大不同:linux只有一個文件樹,整個文件系統(tǒng)是以一個樹根“/”為起點(diǎn)的,所有的文件和外部設(shè)備都以文件的形式掛結(jié)在這個文件樹上,包括硬盤,軟盤,光驅(qū),調(diào)制解調(diào)器等,這和以“驅(qū)動器盤符”為基礎(chǔ)的Windows系統(tǒng)大不相同.Linux的文件結(jié)構(gòu)體現(xiàn)了這個操作系統(tǒng)簡潔清析的設(shè)計,通常我們能夠接觸到的linux發(fā)行版本的根目錄大都是以下結(jié)構(gòu): /bin/etc

/lost+found

/sbin

/var

/boot

/root/home

/mnt

/tmp

/dev

/lib/proc

/usr 使用和維護(hù)UNIX和Linux系統(tǒng)的大部分基本程序都包含在/bin和/sbin里,之所以都包含bin,是因為可執(zhí)行的程序都是二進(jìn)制文件(binaryfiles).

/bin目錄通常用來存放用戶最常用的基本程序,如:

login

Shells

文件操作實(shí)用程序

系統(tǒng)實(shí)用程序

壓縮工具

/sbin目錄通常存放基本的系統(tǒng)和系統(tǒng)維護(hù)程序,如:

fsck

fdisk

mkfs

shutdown

lilo

init

二者主要區(qū)別是:/sbin中的程序只能由root(管理員)來執(zhí)行.

/bin和/sbin/etc

用來存放程序所需的整個文件系統(tǒng)的配置文件,其中的一些重要文件如下:

passwd

shadow

fstab

hosts

motd

profile

shells

serviceslilo.conf/lost+found 用來放那些在系統(tǒng)非正常關(guān)機(jī)后重新啟動系統(tǒng)時,不知道該往哪里恢復(fù)的“流浪”文件的。/boot 存放著和系統(tǒng)啟動有關(guān)系的各種文件,包括系統(tǒng)的引導(dǎo)程序和系統(tǒng)核心部分。/root 這是系統(tǒng)管理員(root)的主目錄。/home

系統(tǒng)中所有用戶的主目錄都存放在/home中。/tmp和/var

這兩個目錄用來存放臨時文件和經(jīng)常變動的文件。/mnt

按照約定,像CD-ROM,軟盤這樣的介質(zhì)都應(yīng)該安裝在/mnt目錄下,/mnt目錄通常包含一些子目錄,每個子目錄是某種特定設(shè)備類型的一個安裝點(diǎn)。例如:

/cdrom

/floppy

.... 如果我們要使用這些特定設(shè)備,我們需要用mount命令從/dev目錄中將外部設(shè)備掛接過來。

這是一個非常重要的目錄,它存放著各種外部設(shè)備的鏡像文件, 例如第一個軟盤驅(qū)動器的名字是fd0; 第一個硬盤的名字是hda,硬盤中的第一個分區(qū)是hda1,第二個分區(qū)是hda2; 第一個光盤驅(qū)動器的名字是hdc; 此外,還有modem和其他外設(shè)的名字等, 我們只需要記住最最常用的那幾個外設(shè)就可以了。/usr按照約定,這個目錄用來存放與系統(tǒng)的用戶直接相關(guān)的程序或文件,這里有每一個系統(tǒng)用戶的主目錄,即相對于他們的小型“/”。/proc

這個目錄下面的內(nèi)容是當(dāng)前在系統(tǒng)中運(yùn)行的進(jìn)程的虛擬鏡像,我們在這里可以看到由當(dāng)前運(yùn)行的進(jìn)程號組成的一些目錄,還有一個記錄當(dāng)前內(nèi)存內(nèi)容的kernel文件。/dev四、linux內(nèi)核源程序目錄結(jié)構(gòu)源程序存放于/usr/src/linux目錄下:1./document:保存幫助文檔2./arch:包含多個子目錄,存放與特定體系結(jié)構(gòu)相關(guān)的代碼。如arch/i386(intel386體系結(jié)構(gòu)),arch/sparc,arch/alpha等。每個子目錄下至少又包含三個子目錄:kernel(存放支持該體系結(jié)構(gòu)特有的諸如信號處理和SMP之類特征的實(shí)現(xiàn));lib(存放該體系結(jié)構(gòu)特有的諸如Strlen和memcpy之類的高效率函數(shù))mm(存放該體系結(jié)構(gòu)特有的諸如內(nèi)存管理程序的實(shí)現(xiàn))3./drivers:該目錄占內(nèi)核代碼一半以上,包括顯卡、網(wǎng)卡、SCSI適配器、軟驅(qū)、PCI設(shè)備和其他外設(shè)的軟件驅(qū)動程序。其他

/fs:包含linux支持的文件系統(tǒng)。

/include:包含源程序中大部分包含(.h)文件。

/init:包含main.c,保存大部分協(xié)調(diào)內(nèi)核初始化的代碼。

/ipc:實(shí)現(xiàn)了進(jìn)程間通訊IPC。

/kernel:包含了linux最重要的部分:實(shí)現(xiàn)平臺獨(dú)立的基本功能,包括Sched.c、fork.c、exit.c。

/lib:存放字符串和內(nèi)存操作函數(shù)。

/mm:包含與體系結(jié)構(gòu)無關(guān)的內(nèi)存管理代碼。

/net:包含了linux應(yīng)用的網(wǎng)絡(luò)協(xié)議代碼。/script:包含用來配置內(nèi)核的腳本。五、linux常用命令介紹Shell:文本級用戶界面,提供了基本功能,包括文件和目錄的訪問,運(yùn)行程序的能力以及同操作系統(tǒng)間的交互作用。有幾種不同的shell用于linux,常用的bash.

命令行交互:比Dos提示符功能強(qiáng)大:

Shellscript編程Linux的命令(也包括文件名等等)大小寫是敏感的文件處理命令ls相當(dāng)于dos下的dir命令,常用的參數(shù)有三個:-a-l-F。

ls–a(顯示包含隱藏文件) Linux中的隱藏文件,以.開頭

ls–F(注意,大寫F)

使用這個參數(shù)表示在文件的后面,添加表示文件類型的符號,如*表示可執(zhí)行,/表示目錄,表示連結(jié)文件. 現(xiàn)在基本上所有的Linux發(fā)行版本的ls都已經(jīng)內(nèi)建了-F參數(shù),即不用輸入這個參數(shù),也能看到各種分辨符號。ls-l(l,而不是數(shù)字1)使用長格式顯示文件內(nèi)容,以查看更詳細(xì)的文件資料,如下所示:

drwx------

2

Guest

users

1024

Nov2121:05

Mail

-rwx--x--x

1

root

root

89080

Nov

722:41

tar*

-rwxr-xr-x

1

root

bin

5013

Aug15

9:32

uname*(文件屬性

、文件數(shù)、擁有者、所屬的group

、文件大小、建檔日期、文件名)文件屬性:一個文件用10個小格來記錄文件的權(quán)限。第一個位置表示是文件或目錄(-或d)剩下的前三個小格是擁有者(user)本身的權(quán)限,中間三個小格是和使用者同一組的成員(group)的權(quán)限,最后三個小格是表示其它使用者(other)的權(quán)限。與dos命令cd類似cd回到用戶自己的HomeDirectory(/root)cd/mnt切換到/mnt目錄下cd..回到上一級cd../..回到上一級的上一級(注意空格)mkdir,rmdir命令 建立新目錄/刪除已建立的目錄cp命令 相當(dāng)于dos下面的copy命令 cp–r源文件(source)

目的文件(target) 參數(shù)r是指連同源文件中的子目錄一同拷貝。cd命令

rm命令 刪除文件,和dos下面的rm(刪除一個空目錄)是有區(qū)別的, rm命令常用的參數(shù)有三個:-i,-r,-f。 比如要刪除一個名字為test的文件: rm–itest 系統(tǒng)會詢問:“rm:remove‘test’?”敲了y,回車以后,這個文件才會真的被刪除。這是因為linux不象dos那樣有undelete的命令,或者是可以用pctool等工具將刪除過的文件救回來,linux中刪除過的文件是救不回來的。 rm–r目錄名 這個操作可以連同這個目錄下面的子目錄都刪除,功能上和rmdir相似。 rm–f文件名(目錄名) 這個操作可以進(jìn)行強(qiáng)制刪除。mv命令

用法和dos下面的move基本相同.移動目錄或文件。當(dāng)使用該命令來移動目錄時,會連同該目錄下面的子目錄一同移走。linux下面沒有rename的命令,可以用以下方法給一個文件或目錄重命名:mv原文件(目錄)名

新文件(目錄)名du,df命令

du命令顯示目前目錄所占的磁盤空間, df命令顯示目前磁盤剩余的磁盤空間。 如果du命令不加任何參數(shù),則返回的是整個磁盤的使用情況,如果后面加了目錄的話,就是這個目錄在磁盤上的使用情況(該功能是dos沒有)。cat命令顯示或連結(jié)一般的ascii文本文件。cat是concatenate的簡寫,類似于dos下的type命令。用法如下:cattext

顯示text這個文件catfile1file2

依順序顯示file1,file2的內(nèi)容catfile1file2>file3

把file1,file2的內(nèi)容結(jié)合起來,再“重定向(>)”到file3文件中?!啊怠毕蛴抑囟ㄏ?,即把左邊的結(jié)果作為輸入,輸入到右邊的file3文件中。其中file3可以是不存在的文件——創(chuàng)建如果file3也可以是已經(jīng)存在的文件——覆蓋,變成file1+file2的內(nèi)容。cat>file1:類似dos中的copyconfile1“空出一行空白行”,等待輸入文字,輸入完畢后再按[Ctrl]+[c]或[Ctrl]+[d],結(jié)束編輯,并生成file1文件catfile1>>file2 表示將file1的文件內(nèi)容“附加”到file2的文件后面,而file2的內(nèi)容依然存在.more,less命令 顯示一般文本文件的指令。當(dāng)文本文件太長,超過一個屏幕畫面時,用cat來看并不理想,可以使用more和less兩個指令。More指令可以使超過一頁的文件臨時停留在屏幕,等用戶按任一個鍵后,才繼續(xù)顯示。less除有more的功能外,還可以用方向鍵向上或向下滾動文件。clear命令這個命令是用來清除屏幕的,它不需要任何參數(shù),和dos下面的clr具有相同的功能,如果你覺得屏幕太紊亂,就可以使用它清除屏幕上的信息。pwd命令這個命令的作用是顯示用戶當(dāng)前的工作路徑。man命令 man是manual(手冊)的縮寫字,相當(dāng)于幫助logout命令 退出系統(tǒng),與login相對。

基本的系統(tǒng)管理命令系統(tǒng)管理基本上可以分為兩種 一種是root(系統(tǒng)管理員)對linux的系統(tǒng)管理部分,root本身的職責(zé)就是負(fù)責(zé)整個linux系統(tǒng)的運(yùn)行穩(wěn)定,增加系統(tǒng)安全性,校驗使用者的身份,新增使用者或刪除惡意的使用者,并明確每一個在機(jī)器上的使用者權(quán)限等等。 另一種是每一個使用者(包括root)對自己文件的權(quán)限管理。因為linux是多用戶多任務(wù)系統(tǒng),每一個使用者都有可能將其工作的內(nèi)容或是一些機(jī)密性的文件放在Linux工作站上,所以對每個文件或是目錄的歸屬和使用權(quán),都要有非常明確的規(guī)定1)管理員使用的系統(tǒng)管理指令adduser命令:新增使用者賬號 adduserjack 新增的用戶是沒有口令的,應(yīng)當(dāng)為用戶設(shè)置口令passwd命令:修改特定用戶的口令, passwdjack對于一般用戶使用該命令,則只能改變自己的密碼。su命令 su可以讓普通用戶變成具有管理員權(quán)限的超級用戶(superuser),(當(dāng)然要輸入密碼) logout就可以退回到原先的那個普通用戶的狀態(tài)。reboot命令重新啟動系統(tǒng)系統(tǒng)將服務(wù)都關(guān)閉,然后再關(guān)閉文件系統(tǒng)和硬件,接著機(jī)器開始重新自檢,重新引導(dǎo),再次進(jìn)入linux系統(tǒng)shutdown,halt命令使用shutdown關(guān)閉系統(tǒng)的時候有以下幾種格式:shutdown

(系統(tǒng)內(nèi)置2分鐘關(guān)機(jī),并傳送一些消息給正在使用的user)shutdown–hnow

(下完這個指令,系統(tǒng)立刻關(guān)機(jī))shutdown–rnow

(下完這個指令,系統(tǒng)立刻重新啟動,相當(dāng)于reboot)shutdown–h20:25

(系統(tǒng)會在今天的20:25關(guān)機(jī))shutdown–h+10

(系統(tǒng)會在十分鐘后關(guān)機(jī))如果在關(guān)機(jī)之前,要傳送信息給正在機(jī)器上的使用者,可以加“-q”的參數(shù),則會輸出系統(tǒng)內(nèi)置的shutdown信息給使用者,通知他們離線。halt命令系統(tǒng)就會開始進(jìn)入關(guān)閉過程,其效果和shutdown–hnow相同用來關(guān)閉linux操作系統(tǒng)的。2)普通用戶使用的系統(tǒng)管理指令chown命令:改變文件的所有者。chmod命令:改變目錄或文件的屬性,即:用三位的2進(jìn)制數(shù)來表示相應(yīng)的三小格的權(quán)限,例如:111

rwx

101

r-x

011–wx

001–x

100

r—如:把文件test.list的屬性設(shè)置為rwxr-x---,則要用chmod750test.list

設(shè)備掛接命令:mountmount-t設(shè)備類型somethingsomewhere軟盤的掛接 將軟盤打開寫保護(hù)放入軟驅(qū)。 mount–tmsdos/dev/fd0/mnt/floppy 以后對/mnt/floppy的操作,即對軟盤的操作光驅(qū)的掛接 mount-tiso9660/dev/hdc/mnt/cdromU盤的掛接 mount–tvfat/dev/sda1/mnt/u_disk掛接前先準(zhǔn)備好掛接點(diǎn)!如:mkdiru_disk設(shè)備卸載命令:umount光盤掛接后會鎖住,直到umount后才能取出。軟盤、U盤也必須先umount,否則容易出錯。umount Umount/dev/fd0 或Umount/mnt/floppy 執(zhí)行上述命令后,才可取出軟盤。請先離開所要卸載的目錄,再umount否則:devicebusy等。tar壓縮/解壓縮命令tarczvf文件名.tar.gz文件名1文件名2…tarzxvf文件名.tar.gz壓縮:解壓縮:tarztvf文件名.tar.gz查看壓縮包中的文件:安裝Gcc編譯環(huán)境將文件夾gcc拷貝到系統(tǒng)中:cp–r/mnt/u/gcc/

cd進(jìn)入gcc目錄下:cdgcc

運(yùn)行shell腳本gcc_install:./gcc_install調(diào)用圖形界面命令——startx系統(tǒng)啟動后默認(rèn)進(jìn)入gnome桌面環(huán)境,可用CTRL+Alt+F7進(jìn)入命令行方式。在圖形界面下也可以調(diào)用Rtvx終端,模擬命令行輸入在命令行方式下,可用startx命令進(jìn)入圖形用戶界面。六、Linux下的編程工具1編輯軟件vi:命令狀態(tài)/編輯狀態(tài)1)啟動vi:執(zhí)行“vi文件名”;剛一啟動時,vi處于命令狀態(tài),可以輸入各種vi的命令,不能編輯;

2)進(jìn)入編輯狀態(tài):插入:i、新增:a;

(進(jìn)入編輯狀態(tài)后,編輯起來很像DOS下的edit;)3)退出編輯狀態(tài):按ESC鍵;重新進(jìn)入命令狀態(tài);

4)命令狀態(tài)下常用的命令: 存盤:w 存盤退出:wq 不存盤退出:q!

2編譯工具Gcc

——Linux下由自由軟件基金FSF創(chuàng)建的重磅炸彈是一個強(qiáng)大的編譯器,目前堪稱是全世界效率最高的C/C++編譯器,現(xiàn)在已經(jīng)廣泛應(yīng)用在各種UNIX環(huán)境下。gcc基本用法: gcc源程序名–oFilename用參數(shù)o指定輸出文件名,若不指定,默認(rèn)文件名為a.out運(yùn)行: ./目標(biāo)文件名2)gcc–c源程序名目標(biāo)文件名參數(shù)c表示只編譯不鏈接,生成目標(biāo)文件.o(可以不指定)gcc–xc源程序名–o輸出文件名參數(shù)x告訴gcc從指定的步驟開始編譯1)gcc–E源程序名–oFilename參數(shù)E告訴gcc預(yù)處理后停止編譯過程,生成預(yù)處理后的源文件3)gcc目標(biāo)文件–o輸出文件連接目標(biāo)文件,生成二進(jìn)制代碼創(chuàng)建進(jìn)程#include<unistd.h>Pid_tfork(void);若執(zhí)行成功,就向父進(jìn)程返回子進(jìn)程的PID,并向子進(jìn)程返回0。即:只調(diào)用fork一次,但會返回兩次。fork創(chuàng)建的新進(jìn)程是和父進(jìn)程一樣的副本。Linux環(huán)境下進(jìn)程相關(guān)程序設(shè)計:創(chuàng)建進(jìn)程1#include<stdio.h>#include<unistd.h>voidmain(){intpid;pid=fork();/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){execlp(“/bin/ls”,”ls”,NULL);}/*childprocess*/else{wait(NULL);printf(“childComplete”);exit(0);}/*parentprocess*/}wait(NULL);進(jìn)程一旦調(diào)用了wait,就立即阻塞自己,由wait自動分析是否當(dāng)前進(jìn)程的某個子進(jìn)程已經(jīng)退出,如果讓它找到了這樣一個已經(jīng)變成僵尸的子進(jìn)程,wait就會收集這個子進(jìn)程的信息,并把它徹底銷毀后返回;如果沒有找到這樣一個子進(jìn)程,wait就會一直阻塞在這里,直到有一個出現(xiàn)為止創(chuàng)建進(jìn)程2#include<unistd.h>#include<stdlib.h>#include<stdio.h>voidmain(){intpid;pid=fork();/*forkchildprocess*/if(pid<0){fprintf(stderr,“ForkFailed”);exit(-1);}elseif(pid==0){ puts(“inchild!”);printf(“\tchildpid=%d\n”,getpid()) printf(“\tchildppid=%d\n”,getppid())}/*childprocess*/else{ wait(NULL); puts(“inparent!”);printf(“\tparentpid=%d\n”,getpid()) printf(“\tparentppid=%d\n”,getppid()}/*parentprocess*/exit(EXIT_SUCESS);}inparent!inchild! childpid=14091 childppid=14090parentpid=14090 parentppid=1549運(yùn)行結(jié)果創(chuàng)建進(jìn)程3#include<unistd.h>#include<stdio.h>voidmain(){intp1,p2,I;while((p1=fork()<0));if(p1==0) for(i=0;i<500;i++){ printf(“child%d\n”,i);

sleep(1);}else{ while((p2=fork())<0); if(p2==0) for(i=0;i<500;i++){ printf(“anotherchild%d\n”,i); sleep(1); } else{ for(i=0;i<500;i++){ printf(“parent%d\n”,i);

sleep(1); } wait(NULL);}} }LinuxthreadLinux內(nèi)核2.2引入了線程的概念。Linux系統(tǒng)下的多線程遵循POSIX線程接口,稱為pthread。 從程序員的角度,Pthread可以看作是由實(shí)現(xiàn)POSIX線程標(biāo)準(zhǔn)的C函數(shù)調(diào)用和數(shù)據(jù)結(jié)構(gòu)、提供接口的頭文件(<pthread.h>),以及讓調(diào)用起作用的庫(libpthread.o)組成的集合 編寫Linux下的多線程程序,需要使用頭文件pthread.h,鏈接時需要使用庫libpthread.opthread_create()創(chuàng)建pthread_join()掛起Pthread_cancel()取消……一、熟悉linux系統(tǒng)環(huán)境1、選擇啟動linux操作系統(tǒng): 以root身份登錄,密碼:123456。2、默認(rèn)進(jìn)入圖形用戶界面模式,調(diào)用rtvx終端程序,進(jìn)行如下練習(xí): 1)練習(xí)linux常用命令 2)練習(xí)使用軟盤或U盤(將源程序拷貝出來) *3)安裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論