進程API

linux下進程的api

    • fork
    • wait
    • exec

fork

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>/*
linux環境運行
子進程并不是完全拷貝了父進程。具體來說,雖然它擁有自己的
地址空間(即擁有自己的私有內存)、寄存器、程序計數器等,但是它從 fork()返回的值是
不同的。父進程獲得的返回值是新創建子進程的 PID,而子進程獲得的返回值是 0。這個差
別非常重要,因為這樣就很容易編寫代碼處理兩種我同的情況(像上面那樣)。
*/int main(int argc, char *argv[])
{printf("hello world (pid:%d)\n", (int)getpid());int rc = fork();if (rc < 0){fprintf(stderr, "fork failed\n");exit(1);}else if (rc == 0) // 子進程{printf("hello, I am child(pid:%d)\n", (int)getpid());}else // 父進程{printf("hello, I am parent of %d (pid:%d)\n", rc, (int)getpid());}return 0;
}

運行結果

在這里插入圖片描述

wait

 // 在父進程的邏輯中增加這兩行就行
#include <sys/wait.h>int wc = wait(NULL);
-------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>/*
linux環境運行
子進程并不是完全拷貝了父進程。具體來說,雖然它擁有自己的
地址空間(即擁有自己的私有內存)、寄存器、程序計數器等,但是它從 fork()返回的值是
不同的。父進程獲得的返回值是新創建子進程的 PID,而子進程獲得的返回值是 0。這個差
別非常重要,因為這樣就很容易編寫代碼處理兩種我同的情況(像上面那樣)。
*/int main(int argc, char *argv[])
{printf("hello world (pid:%d)\n", (int)getpid());int rc = fork();if (rc < 0){fprintf(stderr, "fork failed\n");exit(1);}else if (rc == 0) // 子進程{printf("hello, I am child(pid:%d)\n", (int)getpid());}else // 父進程{   int wc = wait(NULL);printf("hello, I am parent of %d (pid:%d)\n", rc, (int)getpid());}return 0;
}

在這里插入圖片描述

exec

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>/*
linux環境運行
子進程并不是完全拷貝了父進程。具體來說,雖然它擁有自己的
地址空間(即擁有自己的私有內存)、寄存器、程序計數器等,但是它從 fork()返回的值是
不同的。父進程獲得的返回值是新創建子進程的 PID,而子進程獲得的返回值是 0。這個差
別非常重要,因為這樣就很容易編寫代碼處理兩種我同的情況(像上面那樣)。
*/int main(int argc, char *argv[])
{printf("hello world (pid:%d)\n", (int)getpid());int rc = fork();if (rc < 0){fprintf(stderr, "fork failed\n");exit(1);}else if (rc == 0) // 子進程{printf("hello, I am child(pid:%d)\n", (int)getpid());char *myargs[3];myargs[0] = strdup("wc"); // 就是復制myargs[1] = strdup("p3.c");myargs[2] = NULL;execvp(myargs[0],myargs); // 表示 wc p3.c 告訴我我該文件有多少行、多少單詞,以及多少字節printf("this shouldn't print out");}else // 父進程{printf("hello, I am parent of %d (pid:%d)\n", rc, (int)getpid());}return 0;
}

在這里插入圖片描述

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

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

相關文章

【Delphi】使用TWebBrowser執行JavaScript命令傳入JSON參數執行出錯解決方案

目錄 一、問題背景&#xff1a; 二、實際示例&#xff1a; 三、解決方案&#xff1a; 1. Delphi 代碼&#xff1a; 2. javaScript代碼&#xff1a; 一、問題背景&#xff1a; 在用Delphi開發程序&#xff0c;無論是移動端還是PC端&#xff0c;都可以很方便的使用TWebBrows…

Postman如何使用(一):導入導出和發送請求查看響應

一、Postman如何導入導出打包的應用 在Postman中導入導出我們的 測試數據包 和 工作環境 非常的方便&#xff1a; 導出數據包的方法如下&#xff1a; 如果你想學習自動化測試&#xff0c;我這邊給你推薦一套視頻&#xff0c;這個視頻可以說是B站播放全網第一的自動化測試教程…

七天.NET 8操作SQLite入門到實戰 - 第三天SQLite快速入門

前言 今天我們花費一個小時快速了解SQLite數據類型、SQLite常用命令和語法。 七天.NET 8操作SQLite入門到實戰詳細教程 第一天 SQLite 簡介第二天 在 Windows 上配置 SQLite環境 EasySQLite項目源碼地址 GitHub地址&#xff1a;https://github.com/YSGStudyHards/EasySQLite&…

第一百七十六回 如何創建漸變色邊角

文章目錄 1. 概念介紹2. 實現方法3. 代碼與細節3.1 示例代碼3.2 代碼細節 4. 內容總結 我們在上一章回中介紹了"如何創建放射形狀漸變背景"相關的內容&#xff0c;本章回中將介紹"如何創建漸變色邊角".閑話休提&#xff0c;讓我們一起Talk Flutter吧。 1.…

2023-11-22 LeetCode每日一題(網格中的最小路徑代價)

2023-11-22每日一題 一、題目編號 2304. 網格中的最小路徑代價二、題目鏈接 點擊跳轉到題目位置 三、題目描述 給你一個下標從 0 開始的整數矩陣 grid &#xff0c;矩陣大小為 m x n &#xff0c;由從 0 到 m * n - 1 的不同整數組成。你可以在此矩陣中&#xff0c;從一個…

一石激起千層浪,有關奧特曼被炒的消息引發了一場熱烈的討論

在毫無征兆的情況下&#xff0c;OpenAI CEO山姆-奧特曼被炒了。 一石激起千層浪&#xff0c;有關奧特曼被炒的消息引發了一場熱烈的討論。 有人將其看成是一場「宮斗」&#xff0c;有人將其看成是OpenAI的董事會與創始人們的一次糾偏。 無論如何&#xff0c;這樣一件看似并無…

網工內推 | 合資公司網工,CCNP/HCIP認證優先,朝九晚六

01 中企網絡通信技術有限公司 招聘崗位&#xff1a;網絡工程師 職責描述&#xff1a; 1、按照工作流程和指引監控網絡運行情況和客戶連接狀況&#xff1b; 2、確保各監控系統能正常運作&#xff1b; 3、快速響應各個網絡告警事件&#xff1b; 4、判斷出網絡故障&#xff0c;按…

數據要素:數字經濟最核心的資源。(存儲,流通,使用)數據資產的價值量化評估,數據要素的特點

目錄 數據要素:數字經濟最核心的資源。(存儲,流通,使用) 數據資產的價值量化評估

淺談對于Android CMakeLists文件的理解

文章目錄 文件結構 文件結構 cmake_minimum_required(VERSION 3.10.2) //設置cmake版本set(CMAKE_LIBRARY_OUTPUT_DIRECTORY${CMAKE_CURRENT_LIST_DIR}/../jniLibs/${ANDROID_ABI}) //設置.so文件輸出路徑 project("add") //編譯目錄add_library( common //生成.so文…

【Linux虛擬內存的配置】

設置Linux虛擬內存 注意:在做項目時&#xff0c;電腦內存不夠用,怎么辦? 這里給大家提供了一種解決方案,用磁盤換內存,具體如下: 虛擬內存swap介紹 如果你的服務器的總是報告內存不足&#xff0c;并且時常因為內存不足而引發服務被強制kill的話&#xff0c;在不增加物理內…

一、爬蟲-爬取豆瓣電影案例

1、環境配置 你需要一個pycharm和requests第三方庫&#xff0c;在安裝完成之后即可繼續瀏覽。 2、操作流程 &#xff08;1&#xff09;打開豆瓣電影網站&#xff0c;點擊排行榜&#xff0c;點擊喜劇&#xff0c;檢查 &#xff08;2&#xff09;可以看到鼠標每次下移&#xff0…

藍橋杯每日一題2023.11.22

題目描述 題目分析 由題目知其每個品牌積分一定小于315故直接暴力枚舉每個品牌如果符合要求直接輸出即可 &#xff08;答案&#xff1a;150&#xff09; #include<bits/stdc.h> using namespace std; int main() {for(int i 1; i < 315; i ){for(int j 1; j <…

redis運維(十四) hash緩存案例

一 緩存案例 ① 需求 ② 個人理解 策略&#xff1a;不更新緩存&#xff0c;而是刪除緩存大部分觀點認為&#xff1a;1、做緩存不應該是去更新緩存,而是應該刪除緩存2、然后由下個請求去緩存,發現不存在后再讀取數據庫,寫入redis緩存 高并發場景下,到底先更新緩存還是先更…

c語言-操作符詳解(含優先級與結合性)

文章目錄 了解什么是操作數、操作符操作數&#xff1a;操作符 操作符詳解&#xff1a;1.算術操作符&#xff1a; 、- 、* 、/ 、%2.移位操作符: << >>3.位操作符: & | ^4. 賦值操作符: 、 、 - 、 * 、 / 、% 、<< 、>> 、& 、| 、^5. 單?操…

【LeetCode刷題】--39.組合總和

39.組合總和 本題詳解&#xff1a;回溯算法剪枝 class Solution {public List<List<Integer>> combinationSum(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return r…

KyLin離線安裝OceanBase

去OceanBase下載若干文件 1 首先安裝ob-deploy-2.3.1-2.el7.x86_64.rpm rpm -ivh ob-deploy-2.3.1-2.el7.x86_64.rpm# 運行此命令的時候他會報錯 RPM should not be used directly install RPM packages, use Alien instead! 這個需要用Alien去轉換為deb的包&#xff0c;不…

MethodArgumentNotValidException 與 ConstraintViolationException

MethodArgumentNotValidException 和ConstraintViolationException 都是用于處理參數校驗異常的異常類&#xff0c;但它們在不同的上下文中使用。 1. MethodArgumentNotValidException&#xff1a; - MethodArgumentNotValidException 是在 Spring MVC 或 Spring Boot 中處…

一篇五分生信臨床模型預測文章代碼復現——Figure 10.機制及腫瘤免疫浸潤(六)

之前講過臨床模型預測的專欄,但那只是基礎版本,下面我們以自噬相關基因為例子,模仿一篇五分文章,將圖和代碼復現出來,學會本專欄課程,可以具備發一篇五分左右文章的水平: 本專欄目錄如下: Figure 1:差異表達基因及預后基因篩選(圖片僅供參考) Figure 2. 生存分析,…

windows系統玩游戲找不到d3dx9_35.dll缺失的解決方法

分享一個我們在打開游戲或許軟件過程中遇到的問題——“由于找不到d3dx9_35.dll,無法繼續執行代碼”的五個修復方案。這個問題可能會影響到我們的工作和娛樂效率&#xff0c;甚至可能導致工作的延期。因此&#xff0c;我希望通過今天的文章&#xff0c;能夠幫助大家更好地解決這…

電大搜題——打開學習之門的最佳選擇

在快節奏的現代社會&#xff0c;追求知識和學習成為愈發重要的需求。然而&#xff0c;許多人由于時間和機會的限制&#xff0c;無法實現自己的教育夢想。就在這個時候&#xff0c;安徽開放大學廣播電視大學通過推出電大搜題微信公眾號&#xff0c;為廣大學子提供了一個便捷高效…