編寫完畢的**,在沒有執行的時候,稱之為程式
正在執行著的**,就成為程序
程序,除了包含**以外,還有需要執行的環境等,所以和程式是有區別的
python的os模組封裝了常見的系統呼叫,其中就包括fork,可以在python程式中輕鬆建立子程序:
import os
# 注意,fork函式,只在unix/linux/mac上執行,windows不可以
pid = os.fork()
if pid == 0:
print('哈哈1')
else:
print('哈哈2')
在unix/linux作業系統中,提供了乙個fork()系統函式,它非常特殊。
普通的函式呼叫,呼叫一次,返回一次,但是fork()呼叫一次,返回兩次,因為作業系統自動把當前程序(稱為父程序)複製了乙份(稱為子程序),然後,分別在父程序和子程序內返回。
子程序永遠返回0,而父程序返回子程序的id。
這樣做的理由是,乙個父程序可以fork出很多子程序,所以,父程序要記下每個子程序的id,而子程序只需要呼叫getppid()就可以拿到父程序的id。
import os
rpid = os.fork()
if rpid<0:
print("fork呼叫失敗。")
elif rpid == 0:
print("我是子程序(%s),我的父程序是(%s)"%(os.getpid(),os.getppid()))
x+=1
else:
print("我是父程序(%s),我的子程序是(%s)"%(os.getpid(),rpid))
print("父子程序都可以執行這裡的**")
執行結果:
我是父程序(19360),我的子程序是(19361)
父子程序都可以執行這裡的**
我是子程序(19361),我的父程序是(19360)
父子程序都可以執行這裡的**
Linux程序 程序的建立
今天學習了linux的程序建立的基本原理,是基於0.11版本核心的。下面對其作一下簡單的總結。一 linux程序在記憶體中的相關資源 很容易理解,linux程序的建立過程就是記憶體中程序相關資源產生的過程,那麼linux程序在記憶體中有哪些相關資源呢?1 task陣列中的一項 乙個指標指向程序的ta...
程序的建立
程序的建立 1.詳解程序建立的幾類函式的說明 fork vfork exec system?1 獲取id include include pid t getpid void 獲取本程序id。pid t getppid void 獲取父程序id 2 啟動程序 a pid tfork void 功能 建...
程序的建立
fork 用來建立新的程序 在父程序中返回子程序的程序號,在子程序中返回0,錯誤返回 1 表頭檔案 include include 定義函式 pid t fork void pid t 建立程序時會用到程序號的型別定義,實際上為int型別 在fork 建立乙個程序的同時,子程序完全複製父程序的資源,...