天天看點

linux中應用程式main函數中沒有開辟程序的,它應該在那個程序中運作呢?

1.main函數是一個程序還是一個線程?

不知道你是用c建立的,還是用java建立的。

因為它們都是以main()做為入口開始運作的。 

是一個線程,同時還是一個程序。

在現在的作業系統中,都是多線程的。但是它執行的時候對外來說就是一個獨立的程序。

這個程序中,可以包含多個線程,也可以隻包含一個線程。

當用c寫一段程式的話,就是在作業系統中起一個程序它包含一個線程。

而當用java等開發一個多線程的程式的話,它在作業系統中起了一個程序,但它可以包含多個同時運作的線程。

你起一個CS遊戲,這上CS遊戲在作業系統中就是一個程序。

但是這個遊戲一邊在打槍,一邊人在走動,一邊還有音樂 ,

打槍 , 走動 , 音樂 等都是一些線程。

線程不是由程序決定了。

這樣會不會明白一點。

也就是說:你在作業系統中啟動的任一個獨運作的程式或者軟體都是一個程序。

包括你在Linux中運作top時,它也是一個程序(當然很多人說成是線程),它有獨立的程序ID,

可以用ps -ef| grep top的方式檢視,并可以用kill 程序ID殺掉的。

但是這個程序包括幾個線程,是由你的需求決定的,在寫程式時由程式邏輯決定的;

而這些線程是包含在這個程序中的,而且這些線程他們共用CPU資源,在工作的過程

中需要不斷的進行切換,輪換CPU時斷,而各個線程在進行輪換時會共用程序的一些共享區域(或者交換空間)。其它的沒有什麼。

2.在Linux中程式設計,在main主函數中調用fork(),建立新程序。誰是父程序?是main函數所在的程序為父程序嗎?謝謝!

是的. main()函數所在的程序是父程序, 用fork()建立的是子程序.

fork傳回值大于0的是父程序,否則是子程序

??

作者:柒月

上一篇: Spark之scala