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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下的进程相关编程

發(fā)布時間:2024/4/19 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下的进程相关编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

fork()系統(tǒng)調(diào)用

fork的作用是根據(jù)一個現(xiàn)有的進程復制出一個新 進程,原來的進程稱為父進程(Parent Process) ,新進程稱為子進程(Child Process)。系統(tǒng)中 同時運行著很多進程,這些進程都是從最初只有一個進程開始一個一個復制出來的。在Shell下輸入 命令可以運行一個程序,是因為Shell進程在讀取用戶輸入的命令之后會調(diào)用fork復制出一個新 的Shell進程,然后新的Shell進程調(diào)用exec執(zhí)行新的程序。

例如:在Shell提示符下輸入命令ls,首先fork創(chuàng)建子進程,這時父進程仍在執(zhí)行/bin/bash程序,然后子進程調(diào)用exec執(zhí)行新的程序/bin/ls

除了子進程和父進程的進程ID不同,其他資源一模一樣。

——創(chuàng)建子進程

  • 函數(shù)原型:

    #include<sys/types.h> #include <unistd.h> pid_t fork(void);
  • 返回值信息:(一次調(diào)用兩次返回的性質(zhì))
    fork調(diào)用失敗則返回-1,
    成功調(diào)用后父進程中返回值為子進程的pid,在子進程中返回值為1
    其執(zhí)行順序不定!

    特點:調(diào)用一次,返回兩次。

    命令設(shè)置gdb

    setfollow-fork-mode child 在fork之后跟蹤子進程

    set follow-fork-mode parent 則是跟蹤父進程,然后用run命令,看到的現(xiàn)象是父進程一直在運行

    demo:

    #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <erron.h>int main(int argc, char **argv) { pid_t m_pid; m_pid = fork(); if (pid < 0){ perror("fork failed"); exit(1); } if (m_pid == 0){printf("i am child! \n"); } else { printf("i am parent! \n");} return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的Linux下的进程相关编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。