首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言進程控制實戰(七十八):fork()創建進程完整演示

     編輯:關於C

各位看官好,上回做DIY ls命令,今天進入新主題——創建進程。

什麼是進程?

進程就是系統中正在運行的程序。比如你正在用的vim、bash終端、甚至ps命令本身,都是進程。用ps x可查看:

PID TTY STAT TIME COMMAND
5276 pts/2 Ss 0:00 bash   // 終端進程
5297 pts/2 S+ 0:00 vim    // 編輯器進程
5298 pts/1 R+ 0:00 ps x   // ps命令自身進程

進程是抽象概念,系統用PID(進程ID)編號管理。PID從0開始,0和1為系統保留特殊ID。

代碼中如何創建進程?

終端輸入命令回車即創建進程;代碼中用fork()函數。
fork()成功返回新進程PID(>0),失敗返回-1。

完整示例代碼

#include 
#include 

int main() {
    pid_t pid;
    pid = fork();
    sleep(5);  // 方便觀察
    if (pid > 0)
        printf("pid is: %d \n", pid);  // 父進程印出子進程PID
    else
        return 0;  // 子進程直接退出
}

運行結果驗證

$ ./s
pid is: 5456  // 父進程輸出

# 另開終端 ps x
PID TTY STAT TIME COMMAND
5455 pts/2 S+ 0:00 ./s   // 父進程
5456 pts/2 S+ 0:00 ./s   // 子進程(PID匹配輸出)

關鍵點總結

  • fork()創建子進程,父子進程並發運行
  • 父進程獲取子進程PID,子進程fork()返回0
  • sleep(5)確保父進程輸出前子進程尚未退出,便於ps觀察

完整代碼在資源區。下回我們將深入講解父進程與子進程的關係,敬請期待!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved