進程控制常用的一些操作

1、獲取進程的id

int main0()
{printf ("當前進程 ID %d\n",  getpid());printf ("當前父進程:%d\n", getppid());printf ("當前用戶:  %d\n",  getuid());while (1);return 0;
}

2、fork 和 vfork之前的博客里有,這里就不啰嗦了

// fork
int main1()
{// fork : 創建一個子進程// 如果創建失敗,返回-1// 成功返回兩個值,如果是在父進程,返回子進程的ID// 如果是在子進程,返回值是0pid_t pid = fork();if (-1 == pid){perror ("fork");return -1;}if (pid > 0)                // 父進程{printf ("我是父進程,pid = %d\n", getpid());}else                        // 子進程{printf ("我是子進程,pid = %d\n", getpid());}while (1);return 0;}// fork1   父進程和子進程是異步的,輸出都是1
int main2()
{int count = 0;pid_t pid = fork();count++;printf ("count = %d\n", count);return 0;
}// fork2    會產生8個進程
int main3()
{fork();fork();fork();printf ("a\n");while (1);return 0;
}// fork3    產生20個進程
int main4()
{fork();                         // 產生2個進程fork() && fork() || fork();     // 之前的每個進程都會產生5個進程fork();                         // 翻倍printf ("a\n");while (1);return 0;}// 1、vfork 的子進程必須要顯示調用 exit();
// 2、vfork 子進程和父進程共享數據段
// 3、vfork 的子進程先于父進程執行,子進程執行完,CPU才能調度到父進程
int main5()
{int count = 0;pid_t pid = vfork();if (pid < 0){perror ("vfork");return -1;}count++;if (pid > 0)                    // 父進程{printf ("我是父進程,pid = %d  count = %d\n", getpid(), count);}else                            // 子進程{printf ("我是子進程:pid = %d  count = %d\n", getpid(), count);while (1);exit  (0);}return 0;
} 

3、exec函數族

// execl  格式:int execl(const char * path, const char* arg1,...)
int main6()
{// 第一個參數需要一個路徑,能夠找到需要執行的文件// 后面的參數表明執行的方式,和在終端方式類似,如果程序執行需要// 其他的參數 ls -l,參數要作為函數的實參傳過去// 最后需要補一個 NULLint ret = execl ("/bin/ls", "ls", NULL);if (-1 == ret){perror ("exexl");return -1;}   return 0;
}int main7()
{// 產生一個新的程序,替換了原有的程序,原有的進程 id 是不變的// int ret = execl ("bin/ls", "ls", "-l", NULL);int ret = execl ("/bin/ps", "ps", "-ef", NULL);if (-1 == ret){perror ("execl");return -1;}printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}// execv    格式:int execv(const char * path, const char *argv[])
int main8()
{char* a[] = {"file.c", NULL};int ret = execv("file", a);if (-1 == ret){perror ("execl");return -1;}return 0;
}// execlp   格式:int execlp(const char * path, const char* arg1,...)
int main9()
{int ret = execlp ("./file", "file", NULL);if (-1 == ret){perror ("execl");return -1;}return 0;
}int main10()
{int ret = execlp ("ls", "ls", "-l", NULL);if (-1 == ret){perror ("execl");return -1;}printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}// system
int main11()
{printf ("請選擇文件:\n");system ("ls /home");char str[100];while (1){fgets (str, 100, stdin);printf ("[root@promote 15]# ");system (str);}return 0;
}int main12()
{printf ("hello world\n");sleep (1);// 在內部fork()一個子進程,調用 /bin/sh -c string來執行system ("ps -ef | grep a.out");printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}

4、進程的終止

// 進程退出
void func()
{printf ("33333333333333333333333\n");exit (0);       // 進程終止
}int main13()
{printf ("hello\n");printf ("1111111111111111");// 在停止進程前,要檢查文件的打開情況,并把文件緩沖區中// 的內容寫回文件才停止進程exit (0);return 0;
}int main14()
{printf ("hello\n");printf ("11111111111111111");// _exit:直接使進程停止,清除其使用的內存,并清除緩沖區中內容_exit (0);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448467.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vscode 配置 git (配置、暫存、推送、拉取、免密)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 vscode 中對 git 進行了集成&#xff0c;很多操作只需點擊就能操作&#xff0c;無需寫一些 git 指令。 不過這就需要你對 vscode 進行配…

男女之間應該保留多少隱私

究竟&#xff0c;男女朋友之間&#xff0c;應該保留多少個人隱私? 我覺得&#xff0c;如果各自的隱私太多,那么&#xff0c;很難會相信彼此的愛能有多深濃。然而&#xff0c;如果兩個人沒有半點隱私,而且絕對坦誠。 彼此的行為和思想也沒有絲毫隱瞞的話,這種清白赤誠有如標…

處理bugs心法

1. 前提 第一層&#xff1a;遇到異常首先必須告訴自己&#xff0c;冷靜&#xff0c;不要慌。&#xff08;一看到Bug就心慌&#xff0c;那么武功就施展不了了&#xff09; 2. 入門級 第二層&#xff1a;遇到Bug&#xff0c;第一潛意識看輸出異常的信息的&#xff08;控制臺輸出&…

C語言實現簡單的電子通訊錄2

這兩天學完系統調用和標準IO&#xff0c;之前的通訊錄可以進行一些改進&#xff0c;將數據保存到文件中(圖我這里就不發了)。 原理&#xff1a;每次啟動程序時先從預設文件中以只讀的形式讀取保存的通訊錄信息&#xff0c;然后將讀取到的信息導入到結構體中&#xff1b;每次執…

解決 VS Code 保存時候自動格式化

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 不知道從哪個版本起&#xff0c;VS code 保存會自動格式化。 以前都是altshiftF格式化的&#xff0c;現在一保存就格式化&#xff0c;而…

發布在線文檔【軟件=業務+架構+流程+組織.pptx】

10年的技術工作&#xff0c;軟件這個詞對我來說一點都不陌生&#xff0c;但是當我問自己如何理解軟件的&#xff1f;我卻不知道如何回答。軟件&#xff1d;業務&#xff0b;架構&#xff0b;流程&#xff0b;組織&#xff0c;其中公式是借用軟件產品線工程BAPO的概念&#xff0…

12種食物最養男人 10種食物最養女人 太值得收藏了

據統計&#xff0c;男性10大死因中有4項與飲食有關&#xff0c;包括癌癥、腦血管疾病、心臟病和糖尿病。以下12種食品對男性健康有益&#xff0c;建議男性多多攝取。 男人需要的十種養生食物 No.1西紅柿 西紅柿的酸味能促進胃液分泌&#xff0c;幫助消化蛋白質等&#xff…

ES 基礎

1. ES 基礎一網打盡 1.1 ES定義 ESelaticsearch簡寫&#xff0c; Elasticsearch是一個開源的高擴展的分布式全文檢索引擎&#xff0c;它可以近乎實時的存儲、檢索數據&#xff1b;本身擴展性很好&#xff0c;可以擴展到上百臺服務器&#xff0c;處理PB級別的數據。 Elasticsear…

為什么 那么多 前端開發者都想學 Vue.js

根據JavaScript 2017 前端庫狀況調查 Vue.js是開發者最想學的前端庫。我在這里說明一下我為什么認為這也是和你一起通過使用 Vue 構建一個簡單的 App 應用程序的原因。 我最近曾與 Evan You&#xff0c;Chris Fritz&#xff0c;Sarah Drasner&#xff0c;和 Adam Jahr 做了一個…

進程間通信之管道通信

兩個程序之間傳遞數據的一種簡單方法是使用popen和pclose。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen函數允許一個程序將另一個程序作為新進程來啟動&#xff0c;并可以傳遞數據給它或者通過它接收數據…

vue 各組件 使用 Demo

環境搭建 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 假設你已經通讀vue官方文檔&#xff08;文檔都沒讀一遍&#xff08;至少&#xff09;&#xff0c;那不建議動手擼碼&#xff…

Dropbox推獨立應用,公司估值已達100億美元

摘要&#xff1a;Dropbox剛獲得5億美元的新一輪融資&#xff0c;其估值已高達100億美元&#xff0c;現在又推出針對云服務的獨立應用Carousel&#xff0c;不久之后&#xff0c;還會有應用陸續推出&#xff0c;隨著美國前國務卿賴斯的加盟&#xff0c;Dropbox在云市場的表現異常…

SQL經典面試題(二)

有3個表S&#xff0c;C&#xff0c;SCS&#xff08;SNO&#xff0c;SNAME&#xff09;代表&#xff08;學號&#xff0c;姓名&#xff09; //主鍵&#xff1a;SNO //多個人&#xff0c;多門課 3張表 &#xff0c;SC 關系表C&#xff08;CNO&#xff0c;CNAME&#xff0c;…

進程間通信之信號he信號量

信號的篇幅較少&#xff0c;就把他和信號量放在一起了。先講講他們之間的區別&#xff1a; 1.信號&#xff1a;&#xff08;signal&#xff09;是一種處理異步事件的方式。信號時比較復雜的通信方式&#xff0c;用于通知接受進程有某種事件發生&#xff0c;除了用于進程外&…

開源當自強:我們不是“便宜貨”

之前人們爭相使用開源軟件&#xff0c;無非是因為它便宜、好用、易得&#xff0c;不過根據最新的開源軟件調查顯示&#xff0c;人們使用開源軟件最主要的原因還是看重它的高質量。 成本低是很過公司參與開源項目的最主要原因之一&#xff0c;而現在他們視開源是一條通往創新、省…

前端學習:Vue.js基本使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Vue教程文檔&#xff1a; https://cn.vuejs.org/v2/guide/ 定義 實例&#xff1a; new Vue() 掛載點: el 數據&#xff1a;data 模…

PWE

Obstacle Override Logic The obstacle override logic provides the possibility to override obstacle within a window movement by selective switching off the anti-trap functionality.轉載于:https://www.cnblogs.com/dannykong/p/11151813.html

進程間通信之消息隊列

一、什么是消息隊列 unix早期通信機制之一的信號能夠傳送的信息量有限&#xff0c;管道則只能傳送無格式的字節流&#xff0c;這無疑會給應用程序開發帶來不便。消息隊列&#xff08;也叫做報文隊列&#xff09;則克服了這些缺點。 消息隊列就是一個消息的鏈表。可以把消息看…

“ 愿我如星君如月,夜夜流光相皎潔 ...”

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 永遠相信愛情 ... 從一而終 ... --------------------------------------------------------------------------- 后記&#xff1a;2…

python內建函數和工廠函數的整理

內建函數參閱&#xff1a; https://www.cnblogs.com/pyyu/p/6702896.html 工廠函數&#xff1a; 本篇博文比較粗糙&#xff0c;后續會深入整理轉載于:https://www.cnblogs.com/qiang-upc/p/11155786.html