进程有五种正常终止方式:
1.在main函数内执行return语句。这等效于调用exit。
2.调用exit函数。此函数有ISO C定义,其操作包括调用各种终止处理程序(由atexit函数登记),然后关闭所有的标准IO流等。
3.调用_exit或者_Exit函数。ISO C定义_Exit,其目的是为进程提供一种无需运行终止处理程序或信号处理程序而终止的方法。
在UNIX系统中,_Exit和_exit是同义的,并不清洗标准IO流。_exit函数由exit调用。
4.进程的最后一个线程在启动例程中执行返回语句。但是该线程的返回值不会作为进程的返回值。当最后一个线程从其启动例
程返回时,该进程以终止状态0返回。
5.进程的最后一个线程调用pthread_exit函数。在这种情况下,进程的终止状态总是0,与传送给pthread_exit的参数无关。
三种异常终止方式如下:
1.调用abort。它产生SIGABORT信号,这是下一种异常终止的一种特例。
2.当进程接受到信号时。
3.最后一个线程对取消请求作出相应。按系统默认,取消以延迟方式发生:一个线程要求取消另一个线程,一段时间之后,目标
线程终止。
不管进程如何终止,最后都会执行内核中的同一段代码,这段代码为相应进程关闭所有打开的描述符,释放它所使用的存储器等。