exit - 使程序正常中止
SYNOPSIS 总览
#include <stdlib.h> void exit(int status);
DESCRIPTION 描述
函数 exit() 使得程序正常中止,status & 0377 的值被返回给父进程 (参见 wait(2)) 。所有用 atexit() 和 on_exit() 注册的函数都以与注册时相反的顺序被依次执行。使用 tmpfile() 创建的文件被删除。
C 标准定义了两个值 EXIT_SUCCESS 和 EXIT_FAILURE,可以作为 exit() 的参数,来分别指示是否为成功退出。
RETURN VALUE 返回值
函数 exit() 不会返回。
CONFORMING TO 标准参考
SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')
NOTES 要点
在 exit 处理过程中,可能会使用 atexit() 和 on_exit() 注册其他的函数。通常,最后注册的函数被从已注册函数链中摘下来,然后执行。如果在处理过程中,又调用了 exit() 或 longjmp(),那么发生的行为是未定义的。
相对于使用 0 和非零值 1 或 -1,使用 EXIT_SUCCESS 和 EXIT_FAILURE 可以稍微增加一些可移植性 (对非 Unix 环境)。特别的,VMS 使用一种不同的约定。
BSD 试图标准化退出代码 - 参见文件 <sysexits.h> 。
exit() 之后,退出状态必须传递给父进程。这里有三种情况。如果父进程已设置了 SA_NOCLDWAIT,或者已将 SIGCHLD 的处理句柄设置成了 SIG_IGN,这个状态将被忽略。这时要退出的进程立即消亡。如果父进程没有表示它对退出状态不感兴趣,仅仅是不再等待,那么要退出的程序变成一个僵尸进程 (``zombie'',除了包含一个字节的退出状态外,什么也不是)。这样在父进程后来调用 wait() 函数族之一时,可以得到退出状态。
如果所用实现支持 SIGCHLD 信号,信号将被发送到父进程。如果父进程已设置了 SA_NOCLDWAIT,它被取消定义。(?)
如果进程是一个 session leader,它的控制终端是会话的控制终端,那么这个终端的前台进程组的每个进程都将收到 SIGHUP 信号;终端将与这个会话断开,可以再被一个新的控制进程获得。
如果进程的退出使得一个进程组成为孤儿,并且这个新近成为孤儿的进程组中任何的进程被中止,进程组中所有的进程将依次收到 SIGHUP 和 SIGCONT 信号。
exit - 使程序正常中止的更多相关文章
- 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半 ...
- C# 使用多线程,在关闭窗体时 怎么关闭窗体的所有线程,使程序退出。
this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: Application.Exit(); 强制所有消息中止,退出 ...
- 使程序在Linux下后台运行
一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...
- 用extern关键字使程序更加清晰
一.基础研究 之前基于tcc.tlink实现一个新的编译连接工具cc.exe,用到的文件有cs.lib.c0s.obj.main.obj,其中main.obj是我们自己加入的文件,它可以实现开始显示彩 ...
- typedef define typedef可以使程序参数化,提高程序的可移植性。
小结: 1. typedef并没有创建一个新类型,它只是为某个已存在的类型增加了一个新的名称而已: 2. typedef声明也没有证据新的语义:通过这种方式声明的变量与通过普通方式声明的变量具有完全相 ...
- 【转】使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)
一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...
- windows vbs启动多个应用程序并使程序最小化(显示桌面)
windows vbs启动多个应用程序并使程序最小化(显示桌面) CreationTime--2018年7月26日11点18分 Author:Marydon 1.应用场景 每天开机后,都需要打开平 ...
- c#通过app.manifest使程序 右键 以管理员身份运行
c#通过app.manifest使程序以管理员身份运行 时间:2013-06-27 22:47来源:网络收集+本站整理 作者:jtydl 点击: 1175 次 微软在Windows Vista开始引入 ...
- Delphi使程序的窗口出现在最前面并激活
procedure setAppFront(); //使程序的窗口出现在最前面并激活 var pt, OldPt, NewPt: TPoint; begin //判断Application是否最小化, ...
随机推荐
- mysql负载均衡方案
mysql负载均衡方案 一.直接连接 数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案. 比较常见的读写分离方案如下: 1 基于查询分离 最简单的分离方法是将读和写分发到主和从服务 ...
- B. Color the Fence
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 数据库连接 ADO,OLEDB,ODBC,DAO的区别 转载
http://blog.csdn.net/ithomer/article/details/6624684 ODBC(Open Database Connectivity,开放数据库互连) 1992年, ...
- hadoop中的序列化
此文已由作者肖凡授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近在学习hadoop,发现hadoop的序列化过程和jdk的序列化有很大的区别,下面就来说说这两者的区别都有 ...
- 洛谷 - P2774 - 方格取数问题 - 二分图最大独立点集 - 最小割
https://www.luogu.org/problemnew/show/P2774 把两个相邻的节点连边,这些边就是要方便最小割割断其他边存在的,容量无穷. 这种类似的问题的话,把二分图的一部分( ...
- C++笔试题(十)
这些题目相比其他公司的试题,较为基础,全部为C语言,没有涉及C++,但如果不细心,是很难得到较高分数的.另外大家转贴不要去掉我的个人信息啊.互相宣传下网站嘛.1. 找错 void test1() { ...
- bzoj 2084: [Poi2010]Antisymmetry【回文自动机】
manacher魔改,hash+二分都好写,但是我魔改了个回文自动机就写自闭了orz 根本上来说只要把==改成!=即可,但是这样一来很多停止条件就没了,需要很多特判手动刹车,最后统计一下size即可 ...
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
那么 pageEncoding , contentType 分别用来做什么那?在解释之前让我们先了解下jsp从被请求到响应经历的三个阶段: 第一阶段:将jsp编译成Servlet(.java)文件.用 ...
- PHP获取今天开始和结束的时间戳、每周开始结束的时间戳、每月开始结束的时间戳
PHP获取今天内的时间 今天开始和结束的时间戳 $t = time(); $start = mktime(0,0,0,date("m",$t),date("d" ...
- 使用callabestatement接口调用存储过程