Linux 多進程

目錄

0x01 linux中特殊的進程

0x02 進程的標識

0x03 創建子進程


0x01 linux中特殊的進程

  1. 0號進程:idle進程,系統啟動加載的進程
  2. 1號進程:systemd進程,系統初始化,是所有進程的祖先進程 init
  3. 2號進程:kthreadd進程,負責內核中所有進程的調度和管理

0x02 進程的標識

  • 每個進程都會有一個非負整數來標識進程,pid
  • 查看進程的命令 ps -ef | grep yourprocessname

從左到右依次是:啟動進程的用戶 進程的id標識 父進程的id cpu占用率 開始時間 啟動設備 運行總時間 啟動時執行的命令

# 使用getpid(void)可以獲取進程的id
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<unistd.h>int main(){printf("進程的id=%d",getpid());printf("進程的父進程id=%d",getppid());sleep(10);return 0;
}

0x03 創建子進程

  • 使用fork函數可以創建新的進程
  • 在子進程調用fork函數創建進程會返回0,在父進程中使用fork函數會返回進程的ID
  • 子進程是父進程的副本
  • 子進程獲得了父進程的數據空間,堆和棧的副本,不是共享,子進程改變數據,不會影響父進程變量的數據
  • 如果父進程先退出,子進程會成為孤兒進程,1號進程會管理孤兒進程,對子進程的狀態進行收集工作
  • 如果子進程先退出,內核會向父進程發送一個SIGCHLD的信號,如果父進程不處理這個信號,子進程會成為僵尸進程
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>#include<signal.h>void func(int sig){int state;wait(&state);
}
int main(){// 1忽略子進程的sigchld// signal(SIGCHLD,SIG_IGN);// 3使用函數處理信號signal(SIGCHLD,func);File* file=fpopen("/tmp/tmp.txt","w+");fprintf(file,"this is a test\nfflush(file);printf("進程的id=%d",getpid());sleep(10);printf("進程的id=%d",getpid());int pid=fork();printf("fork出的id為%d",pid);sleep(1);if(pid==0){printf("子進程的id為%d",getpid());printf("子進程的父進程id為%d",getppid//子進程的邏輯代碼fprintf(fp,"子進程 this is a test\n");}if(pid>0){printf("父進程的id為%d",getpid());printf("父進程的父進程id為%d",getppid());//父進程的邏輯代碼fprintf(fp," 父進程 this is a test\n");//2 等待子進程退出的代碼 使用wait方式阻塞等待子進程退出// int state;// wait(&state);}printf("進程的id=%d",getpid());sleep(30);printf("進程的id=%d",getpid());fclose(file);
}

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

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

相關文章

YOLOv5白皮書-第Y6周:模型改進

&#x1f4cc;本周任務&#xff1a;模型改進&#x1f4cc; 注&#xff1a;對yolov5l.yaml文件中的backbone模塊和head模塊進行改進。 任務結構圖&#xff1a; YOLOv5s網絡結構圖: 原始模型代碼&#xff1a; # YOLOv5 v6.0 backbone backbone:# [from, number, module, args]…

每日匯評:黃金在 200 日移動平均線附近似乎很脆弱,關注美國零售銷售

1、金價預計將鞏固其近期跌勢&#xff0c;至 6 月初以來的最低水平&#xff1b; 2、對美聯儲再次加息的押注繼續限制了貴金屬的上漲&#xff1b; 3、金融市場現在期待美國零售銷售報告帶來一些有意義的推動&#xff1b; 周二金價難以獲得任何有意義的牽引力&#xff0c;并在…

Mac RN環境搭建

IOS RN ios android原生環境搭建有時候是真惡心&#xff0c;電腦環境不一樣配置也有差異。 我已經安裝官網的文檔配置了ios環境 執行 npx react-nativelatest init AwesomeProject 報錯 然后自己百度查呀執行 gem update --system 說是沒有權限&#xff0c;執行失敗。因…

POSTGRESQL 關于安裝中自動啟動的問題 詳解

開頭還是介紹一下群&#xff0c;如果感興趣Polardb ,mongodb ,MySQL ,Postgresql ,redis &#xff0c;SQL SERVER ,ORACLE,Oceanbase 等有問題&#xff0c;有需求都可以加群群內有各大數據庫行業大咖&#xff0c;CTO&#xff0c;可以解決你的問題。加群請加 liuaustin3微信號 &…

OpenSSH 遠程升級到 9.4p1

OpenSSH 遠程升級到 9.4p1 文章目錄 OpenSSH 遠程升級到 9.4p1背景升級前提1. 升級 OpenSSL2. 安裝并啟用Telnet 升級OpenSSH 背景 最近的護網行動&#xff0c;被查出來了好幾個關于OpenSSH 的漏洞。這是因為服務器系統安裝后&#xff0c;直接使用了系統自帶版本的OpenSSH &am…

2023-08-15 linux mipi 屏幕調試:有一個屏幕開機時候不顯示,開機后按power 按鍵休眠喚醒就可以顯示。原因是reset gpio 被復用

一、現象&#xff1a;今天更新了一個新版本的buildroot linux sdk &#xff0c;調試兩個mipi 屏幕&#xff0c;這兩個屏幕之前在其他的sdk都調好了的&#xff0c;所有直接把配置搬過來。但是有一個屏幕可以正常顯示&#xff0c;有一個屏幕開機時候不顯示&#xff0c;開機后按po…

CentOS防火墻操作:開啟端口、開啟、關閉、配置

一、基本使用 啟動&#xff1a; systemctl start firewalld 關閉&#xff1a; systemctl stop firewalld 查看狀態&#xff1a; systemctl status firewalld 開機禁用 &#xff1a; systemctl disable firewalld 開機啟用 &#xff1a; systemctl enable firewalld systemctl是…

angular注入方法providers

在Angular中有很多方式可以將服務類注冊到注入器中: Injectable 元數據中的providedIn屬性 NgModule 元數據中的 providers屬性 Component 元數據中的 providers屬性 創建一個文件名叫名 hero.service.ts叫 hero 的服務 hero.service.ts import { Injectable } from angular…

C語言,結構體,結構體大小,

1、結構體&#xff1a; 用于存儲不同數據類型的多個相關變量&#xff0c;從而形成一個具有獨立性的組合數據類型。 結構體的聲明&#xff1a; struct 結構體類型名{ 數據類型 成員1&#xff1b; 數據類型 成員2&#xff1b; 數據類型 成員3&#xff1b; ……… }&#xff1…

轉行軟件測試四個月學習,第一次面試經過分享

我是去年上半年從銷售行業轉行到測試的&#xff0c;從銷售公司辭職之后選擇去培訓班培訓軟件測試&#xff0c;經歷了四個月左右的培訓&#xff0c;在培訓班結課前兩周就開始投簡歷了&#xff0c;在結課的時候順利拿到了offer。在新的公司從事軟件測試工作已經將近半年有余&…

深信服數據中心管理系統 XXE漏洞復現

0x01 產品簡介 深信服數據中心管理系統DC為AC的外置數據中心&#xff0c;主要用于海量日志數據的異地擴展備份管理&#xff0c;多條件組合的高效查詢&#xff0c;統計和趨勢報表生成&#xff0c;設備運行狀態監控等功能。 0x02 漏洞概述 深信服數據中心管理系統DC存在XML外部實…

WPS-0DAY-20230809的分析和利用復現

WPS-0DAY-20230809的分析和初步復現 一、漏洞學習1、本地復現環境過程 2、代碼解析1.htmlexp.py 3、通過修改shellcode拿shell曲折的學習msf生成sc 二、疑點1、問題2、我的測試測試方法測試結果 一、漏洞學習 強調&#xff1a;以下內容僅供學習和測試&#xff0c;一切行為均在…

Keil開發STM32單片機項目的三種方式

STM32單片機相比51單片機&#xff0c;內部結構復雜很多&#xff0c;因此直接對底層寄存器編碼&#xff0c;相對復雜&#xff0c;這個需要我們了解芯片手冊&#xff0c;對于復雜項目&#xff0c;這些操作可能需要反復編寫&#xff0c;因此出現了標準庫的方式&#xff0c;對寄存器…

ES中倒排索引機制

在ES的倒排索引機制中有四個重要的名詞&#xff1a;Term、Term Dictionary、Term Index、Posting List。 Term&#xff08;詞條&#xff09;&#xff1a;詞條是索引里面最小的存儲和查詢單元。一段文本經過分析器分析以后就會輸出一串詞條。一般來說英文語境中詞條是一個單詞&a…

日期時間常用功能和函數

1 time 模塊 time 模塊提供了很多與時間相關的類和函數&#xff0c;下面我們介紹一些常用的。 1.1 struct_time 類 time 模塊的 struct_time 類代表一個時間對象&#xff0c;可以通過索引和屬性名訪問值。對應關系如下所示&#xff1a; 索引屬性值0tm_year&#xff08;年&a…

Docker容器與虛擬化技術:Docker資源控制、數據管理

目錄 一、理論 1.資源控制 2.Docker數據管理 二、實驗 1.Docker資源控制 2.Docker數據管理 三、問題 1.docker容器故障導致大量日志集滿&#xff0c;造成磁盤空間滿 2、當日志占滿之后如何處理 四、總結 一、理論 1.資源控制 (1) CPU 資源控制 cgroups&#xff0…

Java Vue Uniapp MES生產執行管理系統

本MES系統是一款B/S結構、通用的生產執行管理系統&#xff0c;功能強大&#xff01; 系統基于多年離散智造行業的業務經驗組建&#xff0c;主要目的是為國內離散制造業的中小企業提供一個專業化、通用性、低成本的MES系統解決方案。 聯系作者獲取

Linux(進程控制)

進程控制 進程創建fork函數初識fork函數返回值寫時拷貝fork常規用法fork調用失敗的原因 進程終止進程退出碼進程常見退出方法 進程等待進程等待必要性獲取子進程status進程等待的方法 阻塞等待與非阻塞等待阻塞等待非阻塞等待 進程替換替換原理替換函數函數解釋命名理解 做一個…

re學習(32)【綠城杯2021】babyvxworks(淺談花指令)

鏈接&#xff1a;https://pan.baidu.com/s/1msA5EY_7hoYGBEema7nWwA 提取碼&#xff1a;b9xf wp:首先找不到main函數&#xff0c;然后尋找特殊字符串&#xff0c; 交叉引用 反匯編 主函數在sub_3D9當中&#xff0c;但是IDA分析錯了 分析錯誤后&#xff0c;刪除函數 創建函數 操…

【Linux】多線程1——線程概念與線程控制

文章目錄 1. 線程概念什么是線程Linux中的線程線程的優點線程的缺點線程的獨立資源和共享資源 2. 線程控制Linux的pthread庫用戶級線程 &#x1f4dd; 個人主頁 &#xff1a;超人不會飛)&#x1f4d1; 本文收錄專欄&#xff1a;《Linux》&#x1f4ad; 如果本文對您有幫助&…