fork linux 低权限,linux/Unix下python的fork详解及应用举例
forking是Unix和Linux最重要的一個點。
總結下其特點如下:
1,子進程與父進程的復制關系:
子進程擁有父進程的所有內存的精確副本。當使用fork給進程分叉時,它會創建一個自己的副本。在多線程環境中,fork意味著執行的線程是重復的,但是可以分開。因此,有的學者認為fork很像生物里克隆的概念。子進程克隆了父進程。獲取了父進程的數據和代碼。
2,相互獨立關系
父進程和子進程的執行是相互獨立的。fork操作為子進程創建了一個單獨的地址空間。子進程從操作系統接收一個新的進程號PID號(PID,進程標識符)。
3,fork()的返回值:
fork的返回值決定當前正在進行的是哪一個進程:
0: 處于子進程中;
正值:處于父進程中;
負值:意味著操作系統在嘗試調用Fork()函數時,發生了錯誤。
4,使用Fork需要導入os模塊
import os
5,子進程的退出
子進程退出必須使用os.exit(0),否則子進程將返回到父進程中。
例:
import os
def child():
print('\nA new child ', os.getpid())
os._exit(0)
def parent():
while True:
newpid = os.fork()
if newpid == 0:
child()
else:
pids = (os.getpid(), newpid)
print("parent: %d, child: %d\n" % pids)
reply = input("q for quit / c for new fork")
if reply == 'c':
continue
else:
break
parent()
每當用戶輸入“c”時,它就會分叉。子進程和父進程都在“如果newpid==0:”語句之后繼續。在父進程中,newpid的值大于0,在子進程中是0。
運行結果如下:
parent: 5280, child: 5281
A new child 5281
q for quit / c for new forkc
parent: 5280, child: 5282
q for quit / c for new fork
A new child 5282
c
parent: 5280, child: 5283
q for quit / c for new fork
A new child 5283
c
parent: 5280, child: 5284
q for quit / c for new fork
A new child 5284
父進程的PID號為5280,每輸入一個“c”獲得一個新的子進程,PID號分別為5281,5282,5283等。
總結
以上是生活随笔為你收集整理的fork linux 低权限,linux/Unix下python的fork详解及应用举例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux+路由器信号检测工具,Linu
- 下一篇: 一眼怪!特斯拉Yoke方向盘毛绒套装车: