程序控制遇到的問題

2022-04-11 16:12:39 字數 1462 閱讀 4934

這週先學了程序環境和程序操作,對於什麼是程序有大致的乙個了解,但是沒有真正的明白到底什麼是程序。在程序控制這一章一開始學習的時候,在盡力的去理解什麼是程序,我理解的程序就是功能性的函式一樣,每實現乙個功能叫做乙個程序,也可以說是叫做過程,是比較具體的過程。

第乙個問題:

第11章程序管理的第乙個示例程式就是列印當前程序的程序id,**如下:

1 #include 2

3 #include 4

5int

main()67

執行結果:

執行結果可以看出來,每次執行這個程式的時候發現,子程序的id每次加1,而其他的程序id都沒有變化。上圖中也可以發現子程序的id是每次加1,後來我在除錯的時候,又重新編譯再執行的結果如下圖:

後來再做了測試,發現,執行一次程式之後,過一會再執行的話程序id也會有很大的變化,我覺得這個id變化比較大的原因是在這個時間間隔內系統內有其他的程序執行的結果。

第二個問題:

列印父程序和子程序的程序id程式如下:

1 #include 2

3 #include 4

5 #include 6

7int main(void)8

9else

if(pid == 0)else

3435

return0;

3637 }

這個**的執行結果是:

根據執行結果發現,先列印的是父程序的程序id,再列印子程序的程序id。為什麼pid會等於0。書上說的是「對於子程序,fork()函式返回0。由於系統的0號程序是核心程序,所以子程序的程序號不可能是0,由此區別父程序和子程序」,這句話跟這個程式結合起來有點不太理解,pid等於0才能執行「printf("this is child, pid is : %u\n", getpid());」這句話,但是程式中pid執行了這句話,是不是說明這裡的pid等於0,那這個pid的值為什麼等於0?

程序及程序控制

學習程序之前,先了解一下程式 所謂程式就是指編譯好的二進位制檔案,在磁碟上,不占用系統資源 cpu 記憶體.而程序是與作業系統相關,是指在記憶體中執行起來的程式,占用一些系統資源,每當乙個程式執行,就相應產生乙個程序。程序的一些相關資訊被放在乙個叫程序控制塊的資料結構中,稱之為pcb。linux下的...

Linux的程序控制

1 有沒有命令能讓程序suspend and resume 參考 http zhidao.baidu.com question 57671342 kill stop 1234 將該程序暫停。如果要讓它恢復到後台,用kill cont 1234 很多在前台執行的程式這樣是不行的 如果要恢復到前台,請在...

scala的程序控制

scala的設計目標之一就是能在簡單的指令碼化任務和大型程式之間保持良好的伸縮性。scala.process包提供了用於與shell程式互動的工具。可以利用scala編寫shell指令碼,利用scala提供的所有威力。如下是乙個簡單的例項 import sys.process.ls al 這樣做的結...