網路程式設計之 程序

2021-09-28 21:16:45 字數 2290 閱讀 1659

首先博主在這裡先告訴大家博主學習的書籍是由

[韓]韓聖雨 著 金國哲 譯 的 tcp/ip網路程式設計,把網路變成寫的通俗易懂。

那麼我們就開始吧!!!!

我們就能利用時鐘中斷讓各個程式來占用cpu的一部分從而完成併發(由於人的視覺間隔較大,所以在我們看來這就是一起執行的,但是在計算機內部不是這樣的,計算及內部是各個程式搶占cpu然後由時鐘中斷中斷連線,再讓cpu處於被爭奪狀態。)

大家不必糾結單道程式設計和多道程式設計,目前我們所接觸到的都是多道程式設計。

給大家介紹一下 fork函式(建立程序。)

注意!!!!!

子程序(右邊的圖)的優先順序並不比父程序(左邊的圖)的優先順序要低,也就是他們可以一起搶奪cpu,誰先搶到cpu就先執行誰。

大家看那一本書上面的**(博主在這裡接直接給大家擷取出來)。

第一次在書上看到這個**你是不是會感到疑惑呢??

frok函式居然會返回兩個值???這已經與我們之前學到的函式的知識相違背了啊,之前如果想要讓函式返回兩個這就必須要指標進行會帶,這個fork居然能返回兩個值????

其實並沒有與我們之前的認知相違背,請大家仔細看看我們之前演示的gif動畫,在呼叫fork之後又會出現乙個新的程序。那麼我們就能知道了吧

(父程序**返回的值其實就是 子程序的id,子程序返回的值為0!!!)

所以就會有上面的if else語句的存在了。

我們能通過返回值檢視到子程序id那麼應該如何獲得父程序id呢???

這本書上確實漏掉這一部分下面博主給大家介紹兩個函式,這兩個函式就是用來獲取程序id的函式。

#include

//所屬標頭檔案

printf

("child id: %u, parent id %u"

,getpid()

,getppid()

);pid_t getpid

(void

)//獲取子程序id

pid_t getppid

(void

)//獲取父程序id(如果在父程序呼叫這個函式會發現父程序的父程序id就是 1171(也就是bash!!!))

init 的有乙個作用就是** 孤兒程序。

大家看過書應該就會知道「殭屍程序吧」,那麼怎麼又會有孤兒程序呢??
這就是書上沒有提到的概念了。

孤兒程序就是(自己的理解): 

父程序如果結束的比子程序早(即父程序先搶到cpu然後結束),那麼此時的子程序就是孤兒程序了。

殭屍程序:

子程序結束的比父程序早,但是父程序沒有**子程序,而作業系統也不會去銷毀子程序。所以就稱之為殭屍程序。

乙個子程序如果變成了孤兒程序就不會再變成殭屍程序了(雖然孤兒程序也沒有父程序給他**程序)。他會由我們的第一程序 init來**掉。

博主的理解可能不是很準確下面就給出標準定義

這兩個函式介紹起來相對複雜,博主就在之後部落格再為大家講解了。

接下來給大家總結一下本篇部落格到底講了什麼??

併發的概念(就是多道程式設計)

fork函式建立子程序(注意**博主的gif動畫。)

返回值有2個:  乙個程序(通過呼叫frok函式)生成--> 2個程序 ---> 各自對fork做返回.

1. 返回子程序的pid (非負整數 > 0) (父程序)

2. 返回0 (子程序)

3.兩個新函式 getpid()(獲取子程序id)、getppid(獲取父程序id).父程序的父程序是bash init是第一程序

3.孤兒程序和殭屍程序的概念(孤兒程序由init**)。

Linux網路程式設計之多程序

多程序模型 多程序模型下,注意如何在程序之間通訊以及孤兒程序和殭屍程序的處理,可以外配上程序池作為計算任務 非同步任務的處理。fork server include include include include include include include include include voi...

併發程式設計之程序

在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多 支援子程序 ...

網路程式設計 之 網路基礎

網路程式設計 1.乙個程式如何在網路上找到另乙個程式?首先,程式必須要啟動,其次,必須有這台機器位址,我們都知道我們人的位址大概就是國家 省 市 區 街道 樓 門牌號這樣子。那麼每一台聯網的機器在網路上也有自己的位址,他們位址是怎麼表示的呢?就是使用一串數字來表示的,例如 100.4.5.6什麼是i...