日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【进程】进程管理

發布時間:2025/4/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【进程】进程管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

查看進程

1. ps

查看某個時間點的進程信息。

示例一:查看自己的進程

# ps -l

示例二:查看系統所有進程

# ps aux

示例三:查看特定的進程

# ps aux | grep threadx

2. pstree

查看進程樹。

示例:查看所有進程樹

# pstree -A

3. top

實時顯示進程信息。

示例:兩秒鐘刷新一次

# top -d 2

4. netstat

查看占用端口的進程

示例:查看特定端口的進程

# netstat -anp | grep port

進程狀態

狀態說明
Rrunning or runnable (on run queue)
正在執行或者可執行,此時進程位于執行隊列中。
Duninterruptible sleep (usually I/O)
不可中斷阻塞,通常為 IO 阻塞。
Sinterruptible sleep (waiting for an event to complete)?
可中斷阻塞,此時進程正在等待某個事件完成。
Zzombie (terminated but not reaped by its parent)
僵死,進程已經終止但是尚未被其父進程獲取信息。
Tstopped (either by a job control signal or because it is being traced)?
結束,進程既可以被作業控制信號結束,也可能是正在被追蹤。

?

?

?

SIGCHLD

當一個子進程改變了它的狀態時(停止運行,繼續運行或者退出),有兩件事會發生在父進程中:

  • 得到 SIGCHLD 信號;
  • waitpid() 或者 wait() 調用會返回。

其中子進程發送的 SIGCHLD 信號包含了子進程的信息,比如進程 ID、進程狀態、進程使用 CPU 的時間等。

在子進程退出時,它的進程描述符不會立即釋放,這是為了讓父進程得到子進程信息,父進程通過 wait() 和 waitpid() 來獲得一個已經退出的子進程的信息。

?

wait()

pid_t wait(int *status)

父進程調用 wait() 會一直阻塞,直到收到一個子進程退出的 SIGCHLD 信號,之后 wait() 函數會銷毀子進程并返回。

如果成功,返回被收集的子進程的進程 ID;如果調用進程沒有子進程,調用就會失敗,此時返回 -1,同時 errno 被置為 ECHILD。

參數 status 用來保存被收集的子進程退出時的一些狀態,如果對這個子進程是如何死掉的毫不在意,只想把這個子進程消滅掉,可以設置這個參數為 NULL。

waitpid()

pid_t waitpid(pid_t pid, int *status, int options)

作用和 wait() 完全相同,但是多了兩個可由用戶控制的參數 pid 和 options。

pid 參數指示一個子進程的 ID,表示只關心這個子進程退出的 SIGCHLD 信號。如果 pid=-1 時,那么和 wait() 作用相同,都是關心所有子進程退出的 SIGCHLD 信號。

options 參數主要有 WNOHANG 和 WUNTRACED 兩個選項,WNOHANG 可以使 waitpid() 調用變成非阻塞的,也就是說它會立即返回,父進程可以繼續執行其它任務。

孤兒進程

一個父進程退出,而它的一個或多個子進程還在運行,那么這些子進程將成為孤兒進程。

孤兒進程將被 init 進程(進程號為 1)所收養,并由 init 進程對它們完成狀態收集工作。

由于孤兒進程會被 init 進程收養,所以孤兒進程不會對系統造成危害。

僵尸進程

一個子進程的進程描述符在子進程退出時不會釋放,只有當父進程通過 wait() 或 waitpid() 獲取了子進程信息后才會釋放。如果子進程退出,而父進程并沒有調用 wait() 或 waitpid(),那么子進程的進程描述符仍然保存在系統中,這種進程稱之為僵尸進程。

僵尸進程通過 ps 命令顯示出來的狀態為 Z(zombie)。

系統所能使用的進程號是有限的,如果產生大量僵尸進程,將因為沒有可用的進程號而導致系統不能產生新的進程。

要消滅系統中大量的僵尸進程,只需要將其父進程殺死,此時僵尸進程就會變成孤兒進程,從而被 init 進程所收養,這樣 init 進程就會釋放所有的僵尸進程所占有的資源,從而結束僵尸進程。

轉載于:https://www.cnblogs.com/itplay/p/11102679.html

總結

以上是生活随笔為你收集整理的【进程】进程管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。