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关键字大家应该都很熟吧

cpp 复制代码
#include <stdio.h>

int main()
{
	return 0;
}

每写一个程序基本都会写一遍这个

return是函数执行完后的返回。

return执行完后把控制权交给调用函数。

return()是当前函数返回。如果是在主函数main, 自然也就结束当前进程了

如果不是,那就是退回上一层调用。

在多个进程时.如果有时要检测上进程是否正常退出的.

就要用到上个进程的返回值,依次类推。

03 _exit()和_Exit()函数

_exit()函数原型:

cpp 复制代码
#include <unistd.h> 
 
void _exit(int status); 

调用函数需要传入 status 状态标志,0 表示正常结束、若为其它值则表示程序执行过程中检测到有错误 发生。使用示例如下:

示例代码: _exit()和_Exit()函数使用

cpp 复制代码
#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()函数原型如下所示:

cpp 复制代码
#include <stdlib.h> 
 
void _Exit(int status); 

_exit()和_Exit()两者等价,用法作用是一样的

需要注意的是这 2 个函数都是系统调 用。

04 exit()函数

exit()函数_exit()函数都是用来终止进程的,

exit()是一个标准 C 库函数

而_exit()和_Exit()是系统调用。

执行 exit()会执行一些清理工作,最后调用_exit()函数。

exit()函数原型:

cpp 复制代码
#include <stdlib.h>
 
void exit(int status);

该函数是一个标准 C 库函数,使用该函数需要包含头文件,该函数的用法和_exit()/_Exit()是 一样的

平时的话还是用C库函数比较好吧,毕竟移植性更好

如果要查某些函数的话,我们可以直接查man手册

这是Linux的终端,比如我们要查malloc函数,我们可以直接man malloc

然后回车,我们就能看到使用文档了

相关推荐
zh_xuan39 分钟前
c++ 单例模式
开发语言·c++·单例模式
apocelipes2 小时前
Linux c 运行时获取动态库所在路径
linux·c语言·linux编程
努力学习的小廉2 小时前
深入了解linux系统—— 进程池
linux·运维·服务器
int型码农3 小时前
数据结构第八章(一) 插入排序
c语言·数据结构·算法·排序算法·希尔排序
秃头菜狗3 小时前
各个主要目录的功能 / Linux 常见指令
linux·运维·服务器
利刃大大3 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
2301_793102493 小时前
Linux——MySql数据库
linux·数据库
喜欢吃燃面3 小时前
C++刷题:日期模拟(1)
c++·学习·算法
SHERlocked933 小时前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
憧憬一下4 小时前
FreeRTOS任务之深入篇
stm32·嵌入式·freertos