P7 Linux C三種終止進程的方法

前言

? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ?

🎬 個人主頁:@ChenPi

🐻推薦專欄1: 《C++_@ChenPi的博客-CSDN博客》????

🔥 推薦專欄2: 《Linux C應用編程(概念類)_@ChenPi的博客-CSDN博客》???

🛸推薦專欄3: ??????《 鏈表_@ChenPi的博客-CSDN博客 》 ???
🌺本篇簡介 ?:? 這章我們將Linux環境下終止進程的三種方法

01? 三種終止進程的方法:

  1. ?main 函數中運行 return;
  2. ?調用 Linux 系統調用_exit()或_Exit();
  3. ?調用 C 標準庫函數 exit()。

02 return關鍵字

return關鍵字大家應該都很熟吧

#include <stdio.h>int main()
{return 0;
}

?每寫一個程序基本都會寫一遍這個

return是函數執行完后的返回。

return執行完后把控制權交給調用函數。

return()是當前函數返回。如果是在主函數main, 自然也就結束當前進程了

如果不是,那就是退回上一層調用。

在多個進程時.如果有時要檢測上進程是否正常退出的.

就要用到上個進程的返回值,依次類推。

03?_exit()和_Exit()函數

_exit()函數原型:

#include <unistd.h>?void _exit(int status);?

調用函數需要傳入 status 狀態標志,0 表示正常結束、若為其它值則表示程序執行過程中檢測到有錯誤 發生。使用示例如下:

示例代碼: _exit()和_Exit()函數使用

#include <sys/types.h>?
#include <sys/stat.h>?
#include <fcntl.h>?
#include <unistd.h>?
#include <stdio.h>?int main(void)?
{?int fd;?/* 打開文件 */?fd = open("./test_file", O_RDONLY);?if (-1 == fd) {?perror("open error");?_exit(-1);?}?close(fd);?_exit(0);?
}?

用法很簡單,就是程序正常退出就0,非正常就是-1

_Exit()函數原型如下所示:

#include <stdlib.h>?void _Exit(int status);?

_exit()和_Exit()兩者等價,用法作用是一樣的

需要注意的是這 2 個函數都是系統調 用。

04 exit()函數

exit()函數_exit()函數都是用來終止進程的,

exit()是一個標準 C 庫函數

而_exit()和_Exit()是系統調用。

執行 exit()會執行一些清理工作,最后調用_exit()函數。

exit()函數原型:

#include <stdlib.h>void exit(int status);

該函數是一個標準 C 庫函數,使用該函數需要包含頭文件,該函數的用法和_exit()/_Exit()是 一樣的?

平時的話還是用C庫函數比較好吧,畢竟移植性更好

如果要查某些函數的話,我們可以直接查man手冊

這是Linux的終端,比如我們要查malloc函數,我們可以直接man malloc?

然后回車,我們就能看到使用文檔了

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

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

相關文章

什么是MyBatis、什么是MyBatis-Plus、簡單詳細上手案例

什么是MyBatis MyBatis是一個開源的Java持久層框架&#xff0c;用于簡化與關系型數據庫的交互。它通過將SQL語句與Java代碼進行分離&#xff0c;提供了一種優雅的方式來處理數據庫操作。 MyBatis的核心思想是將SQL語句與Java方法進行映射&#xff0c;使得開發人員可以通過配置…

【工具類】Word 轉 PDF

商業版權問題 使用破解版-aspose-words-19.5jdk.jar https://blog.csdn.net/aley/article/details/127914145 Document wordDoc new Document(wordFileInputStream); wordDoc.save(pdfFile, new PdfSaveOptions());中文亂碼問題 在linux中使用會造成中文亂碼問題 解決方案…

C語言數據結構-基于單鏈表實現通訊錄

文章目錄 1 基礎要求2 通訊錄功能2.1 引入單鏈表的文件2.2 定義聯系人數據結構2.3 打開通訊錄2.4 保存數據后銷毀通訊錄2.5 添加聯系人2.6 刪除聯系人2.7 修改聯系人2.8 查找聯系人2.9 查看通訊錄 3 通訊錄代碼展示3.1 SeqList_copy.h3.2 SeqList_copy.c3.3 Contact.h3.4 Conta…

模塊化機房在大數據時代的角色:高效、可擴展的數據存儲和處理平臺

隨著大數據時代的到來&#xff0c;數據已經成為企業競爭的核心資源。然而&#xff0c;傳統的數據中心已經無法滿足現代業務的需求&#xff0c;尤其是在數據存儲和處理方面。模塊化機房作為一種新型的數據中心建設模式&#xff0c;具有高效、可擴展等優勢&#xff0c;逐漸成為大…

PyCharm編輯器結合Black插件,輕松實現Python代碼格式化

大家好&#xff0c;使用Black對Python代碼進行格式化&#xff0c;可使代碼看起來更美觀。但是&#xff0c;隨著項目規模不斷變大&#xff0c;對每個文件運行Black變得很繁瑣。本文就來介紹在PyCharm中實現這一目標的方法。 1.安裝Black 首先&#xff0c;在虛擬環境中安裝Blac…

二叉樹的鋸齒形層序遍歷[中等]

優質博文&#xff1a;IT-BLOG-CN 一、題目 給你二叉樹的根節點 root &#xff0c;返回其節點值的 鋸齒形層序遍歷 。&#xff08;即先從左往右&#xff0c;再從右往左進行下一層遍歷&#xff0c;以此類推&#xff0c;層與層之間交替進行&#xff09;。 示例 1&#xff1a; 輸…

認識線程和創建線程

目錄 1.認識多線程 1.1線程的概念 1.2進程和線程 1.2.1進程和線程用圖描述關系 1.2.2進程和線程的區別 1.3Java 的線程和操作系統線程的關系 2.創建線程 2.1繼承 Thread 類 2.2實現 Runnable 接口 2.3匿名內部類創建 Thread 子類對象 2.4匿名內部類創建 Runnable 子類對…

使用貝葉斯網絡檢測因果關系,提升模型效果更科學(附Python代碼)

雖然機器學習技術可以實現良好的性能&#xff0c;但提取與目標變量的因果關系并不直觀。換句話說&#xff0c;就是&#xff1a;哪些變量對目標變量有直接的因果影響&#xff1f; 機器學習的一個分支是貝葉斯概率圖模型(Bayesian probabilistic graphical models)&#xff0c;也…

【Com通信】Com模塊詳細介紹

目錄 前言 1. Com模塊功能介紹 2.關鍵概念理解 3.功能詳細設計 3.1 Introduction 3.2 General Functionality 3.2.1 AUTOSAR COM basis 3.2.2 Signal Values 3.2.3 Endianness Conversion and Sign Extension 3.2.4 Filtering 3.2.5 Signal Gateway 3.3 Normal Ope…

2.2 網絡多線程(私聊、群發、發送文件、推送新聞、離線留言)

文章目錄 一、私聊1.1 分析1.2 客戶端1.2.1 MessageClientService 私聊類1.2.2 ClientConnectServerThread 線程類 1.3 服務端1.3.1 ServerConnectClientThread 線程類 1.4功能演示 二、群發消息2.1 分析2.2 客戶端2.2.1 MessageClientService類2.2.2 ClientConnectServerThrea…

1.1.1.多線程的發展--對cpu性能的壓榨史

一.壓榨歷史 1.單進程人工切換。紙帶機。只能解決簡單的數學問題。 2.單道批處理。多進程批處理。多個任務批量執行。解決手動操作時需要人工切換作業導致的系統利用率低的問題 3.多進程并行處理。把程序寫在不同的內存位置來回切換。當一個作業在等待I/O處理時&#xff0c;…

C語言-函數STRCPY

strcpy char *strcpy(char *restrict dst, const char *restrict src);把src的字符串拷貝到dst restrict表明src和dst不重疊&#xff08;C99&#xff09; 返回dst 為了能鏈起代碼來 復制一個字符串 char dst (char)malloc(strlen(src) 1); strcpy(dst, src);

從單向鏈表中刪除指定值的節點

輸入一個單向鏈表和一個節點的值&#xff0c;從單向鏈表中刪除等于該值的節點&#xff0c;刪除后如果鏈表中無節點則返回空指針。 鏈表的值不能重復。構造過程&#xff0c;例如輸入一行數據為:6 2 1 2 3 2 5 1 4 5 7 2 2則第一個參數6表示輸入總共6個節點&#xff0c;第二個參數…

通過仿真理解完整的陣列信號噪聲模型

概要 噪聲對無線電設備的信號接收會造成影響,是通信、雷達、導航、遙感等工程應用領域中的關鍵考慮因素。通常認為陣列合成能夠提升信噪比,但忽略了這一論斷的前提,即不同通道引入的噪聲互不相關。但實際應用中,接收的噪聲不僅僅包含信道引入的不相關噪聲,還包含從外界環…

1-6、編程語言排行榜

語雀原文鏈接 https://www.tiobe.com/tiobe-index/

IntelliJ IDEA創建一個Maven項目

在IDEA中創建Maven項目&#xff0c;前提是已經安裝配置好Maven環境 。 本文主要使用的是IntelliJ IDEA 2022.2.1 (Community Edition) 1.創建一個新project:File>Project 2.修改Maven配置&#xff1a;File>Settings>搜索maven 創建好的工程如下&#xff1a; src/main…

使用NanoPi NEO4進行rtsp拉流

使用系統&#xff1a;FriendlyDesktop系統 使用python進行編程&#xff0c;分別使用opencv與ffmpeg進行功能實現&#xff0c;折騰了挺長時間&#xff0c;代碼很簡單&#xff0c;主要是環境搭建。主要是python、opencv-python、ffmpeg-python、numpy之間的版本兼容&#xff0c;…

Chart 8 內核優化

文章目錄 前言8.1 內核融合和拆分8.2 編譯選項8.3 Conformant&#xff08;規范&#xff09; vs. fast vs. native math functions8.4 Loop unrolling8.5 避免分支發散8.6 Handle image boundaries8.7 Avoid the use of size_t8.8 通用 vs. 具名內存地址空間8.9 Subgroup8.10 Us…

七個常用<python裝飾器>---足夠改進代碼質量 (保姆詳解)

前言: 寫代碼嘛&#xff0c;關鍵是得讓它既好用又好看&#xff0c;這不&#xff0c;Python裝飾器就擺在那兒。咱們程序員有時也得有那么點藝術家的腔調&#xff1a;講求效率&#xff0c;追求代碼的簡潔優雅&#xff0c;偶爾還得裝裝X&#xff0c;不是嗎&#xff1f; 翻開人家…

SpringSecurity6 | 自定義認證規則

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a; Java從入門到精通 ?特色專欄&#xf…