当前位置: 首页 > news >正文

无锡网站制作磁力天堂torrentkitty

无锡网站制作,磁力天堂torrentkitty,开发网站的步骤,大连外贸网站建设&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.进程创建02.进程终止异常终止如何终止exit()_exit() 01.进程创建 #include <unistd.h> pid_t fork(void);返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子进…

Alt

🔥个人主页Quitecoder

🔥专栏linux笔记仓

Alt

目录

    • 01.进程创建
    • 02.进程终止
      • 异常终止
      • 如何终止
      • `exit()`
      • `_exit()`

01.进程创建

#include <unistd.h>
pid_t fork(void);

返回值:自进程中返回0,父进程返回子进程id,出错返回-1

进程调用fork,当控制转移到内核中的fork代码后,内核做:

  • 分配新的内存块和内核数据结构给子进程
  • 将父进程部分数据结构内容拷贝至子进程
  • 添加子进程到系统进程列表当中
  • fork返回,开始调度器调度

在这里插入图片描述
写时拷贝

在这里插入图片描述

02.进程终止

首先想清楚,终止是做什么:

  • 释放曾经的代码和数据所占据的空间
  • 释放内核数据结构

进程退出场景:

  • 代码运行完毕,结果正确
  • 代码运行完毕,结果不正确(这两点可以通过进程退出码判断)
  • 代码异常终止

在这里插入图片描述
上面的代码,进程11258为父进程bash,echo $?父进程获取到的是最近一个子进程退出的退出码,前面我们提到,echo是内建命令,打印的都是bash内部的变量数据
在这里插入图片描述

父进程bash为什么要得到子进程的退出码呢?要知道子进程退出的情况(成功,失败,失败的原因是什么?)

进程结束时,可以通过 return 语句(在函数中)或 exit() 函数(直接从程序中)指定一个退出码。这个退出码是一个整数,传递给父进程,用于表示子进程的终止状态。

常见惯例:

  • 0(EXIT_SUCCESS):通常表示成功。程序执行完成且没有错误。
  • 非0(EXIT_FAILURE):通常表示有错误发生。具体的非零值可以用来指示不同类型的错误

异常终止

在操作系统中,进程的异常终止通常是由于一些错误或意外情况导致程序不能正常运行到结束。以下是一些典型的异常终止情况:

  1. 程序错误

    • 段错误(Segmentation Fault):程序试图访问其内存空间以外的区域或非法的内存区域。常见于指针错误,如访问未初始化的指针、空指针或已释放的内存。
    • 除零错误:程序尝试进行除以零的运算,这在数学运算中是未定义的。
  2. 资源问题

    • 内存耗尽:程序请求更多内存时,如果系统无法分配(如堆内存耗尽),可能会导致程序异常终止。
    • 文件描述符耗尽:程序打开太多文件而没有关闭,达到系统限制,可能导致系统函数失败,影响程序继续运行。
  3. 信号

    • 致命信号
      • SIGSEGV(段错误信号):最常见的程序崩溃原因,通常是由于访问违法的内存地址。
      • SIGABRT(中止信号):通常是由于程序内部发生严重错误或调用 abort() 函数而触发。
      • SIGFPE(浮点异常信号):执行了一个无效的算术运算,比如除以零。
      • SIGKILL:无条件终止程序运行的信号,无法捕获或忽略。
      • SIGTERM:请求终止程序的信号,比 SIGKILL 更温和,允许程序进行清理(关闭文件、释放资源等)操作后退出。
    • 非致命信号(如 SIGINT、SIGHUP 等),如果没有被程序正确处理,也可能导致程序终止。
  4. 操作系统干预

    • 死锁检测:操作系统可能终止处于死锁状态的进程以解锁系统资源。
    • 资源超额:操作系统对程序使用的资源(如 CPU 时间、内存使用量)有限制,如果程序超出这些限制,如超过了设定的 CPU 时间,操作系统可能终止这个进程。
  5. 运行时异常

    • 未捕获的异常:在一些高级语言中(如 Java、Python),如果程序中发生了异常而没有被捕获和处理,这通常会导致程序异常终止。例如,Python 中未被捕获的 ValueErrorIndexError

一旦出现异常,退出码没有意义了!进程出异常,本质是因为进程收到了OS发给进程的信号!

在这里插入图片描述
在这里插入图片描述
段错误,OS提前终止进程

我们可以看进程退出的时候,退出信号是多少,就可以判断我的进程为什么异常了! ! !
在这里插入图片描述

  1. 先看是不是异常
  2. 不是异常,就一定是代码跑完了,看退出码就行

衡量一个进程退出,我们只需要两个数字:退出码,退出信号!
在这里插入图片描述

如何终止

正常退出:

  1. main函数return,表示进程终止(非main函数,return,函数结束)
  2. 代码调用exit函数,注意:我们代码的任意位置调用exit,都表示进程退出
  3. _exit(),系统调用

异常退出:

  • ctrl + c,信号终止

在 Unix 和类 Unix 系统中,_exit()exit() 都用于终止进程,但它们在功能和使用场景上有重要的区别。理解这些区别有助于正确地管理程序的终止过程,特别是在涉及资源清理和子进程管理时

exit()

exit() 函数是由 C 标准库提供的,用于结束程序。它执行几个重要的清理操作,然后调用底层的 _exit()exit_group() 系统调用来终止进程。

  • 特点和操作
    • 刷新缓冲区exit() 会自动刷新所有 stdio 的缓冲区,将缓冲区内的数据写入文件。这确保了所有挂起的输出(例如,使用 printf() 产生的输出)都被正确地写出。在这里插入图片描述
      在这里插入图片描述

    • 执行 atexit() 注册的函数:如果程序中使用了 atexit() 注册了任何终止时执行的函数,exit() 会在实际终止进程前按注册的逆序调用这些函数。这可以用于执行一些如关闭文件描述符、释放分配的内存等清理工作。

    • 关闭 stdio 库:关闭所有使用标准 I/O 库打开的文件等资源。

使用场景主要是普通的应用程序,在需要确保输出数据完整性和执行特定的清理操作时使用。

_exit()

_exit() 函数是由 POSIX 标准指定,直接调用系统级别的退出操作,用于立即结束程序,不执行标准 I/O 的清理操作和不调用 atexit() 或者 C++ 的全局对象的析构函数。

  • 特点和操作
    • 不刷新缓冲区:不处理 stdio 的缓冲区,如果缓冲区内有未写入的数据,这些数据将丢失。在这里插入图片描述
      在这里插入图片描述

    • 不执行 atexit() 注册的函数:任何通过 atexit() 注册的函数都不会被执行。

    • 立即终止:提供一种确保程序能迅速终止的方式,通常用于子进程退出或者在错误处理中需要立即终止程序时使用。

使用场景主要是在创建子进程后,子进程完成任务立即退出时,或者在程序遇到无法恢复的错误需要立即终止时使用。

  • 使用 exit() 当你需要正常终止程序,并且需要清理资源(如关闭文件、保存状态等)。
  • 使用 _exit() 在需要快速退出且不关心资源清理的场景下,比如在子进程中执行了某个任务后,或者在出现严重错误时安全退出。

选择合适的函数可以避免数据丢失和资源泄漏,确保程序的稳定和安全。

return是一种更常见的退出进程方法。执行return n等同于执行exit(n),因为调用main的运行时函数会将main的返回值当做 exit的参数

http://www.15wanjia.com/news/44691.html

相关文章:

  • 手机网站生成小程序百度网页版下载
  • 怎么创建一个博客网站吗seo关键词排名软件
  • 番禺网站建设公司腾讯云域名购买
  • 做网站的图片传进去很模糊怎么把网站排名排上去
  • 阿里云服务器可以做网站吗网络推广营销方法
  • 企业网站推广解决方案站长统计app软件大全
  • 赤峰公司网站建设网络营销的分类
  • 工业园区网站建设百度发布信息的免费平台
  • 衡阳县专业做淘宝网站今天全国31个省疫情最新消息
  • 石家庄做网站的自动外链发布工具
  • 开发小程序大概多少钱seo是怎么优化上去
  • 做网站好的网站建设公司我赢网客服系统
  • 工商年报网上申报系统官网贵阳百度快照优化排名
  • 做不锈钢管网站seo建站公司
  • 重庆h5建站模板陕西seo优化
  • 南宁市有哪些做网站的外包企业怎样做网站推广啊
  • 西安网站建设麦欧科技武安百度seo
  • 莱州网站建设制作seo免费教程
  • wordpress404页面百度推广优化公司
  • 忠县网站制作2345网址导航下载桌面
  • 网站初期缺点百度如何做推广
  • 福州网站公司网络营销做的比较好的企业
  • 东营做网站优化哪家好今天重大新闻头条
  • 常州网站建设公司巧誉友网络关键词优化推广公司排名
  • 一个网站怎么做软件aso优化注意什么
  • 中国十大装修公司品牌排行榜重庆seo整站优化效果
  • 昌乐营销型网站建设太原seo管理
  • 网站外链怎么发布百度平台营销宝典
  • 东莞网站建设公司哪家专业站外seo是什么
  • 海安建设局网站磁力搜索神器