在C中退出处理程序

时间:2013-03-01 09:38:44

标签: c exception-handling error-handling

所有

我想在我的程序中开发一个退出处理程序。

我是C的新手;这是关于用C管理信号的全部吗?

我如何知道我的节目是否以良好的方式结束?

如果没有,退出时如何获取最大信息?

3 个答案:

答案 0 :(得分:5)

  1. C(C89和C99标准)提供atexit()寄存器功能,以便在程序退出时调用。这与信号无关。与信号处理程序不同,您可以注册多个退出处理程序。退出处理程序的调用顺序与它们在atexit()中的注册顺序相反。

  2. 惯例是当程序干净地退出时,它返回退出状态0。这可以通过return 0 main()exit(0)从您计划中的任何位置完成。

  3. 在Unix / Linux / POSIX类型的操作系统(不确定Windows)中,父进程使用wait()系统调用或其变体获取有关子进程的退出状态信息。

    < / LI>

    示例:这是一个简单的程序及其输出,用于演示atexit()

    #include <stdlib.h>
    #include <stdio.h>
    
    static void exit_handler1(void)
    {
        printf("Inside exit_handler1()!n");
    }
    
    static void exit_handler2(void)
    {
        printf("Inside exit_handler2()!n");
    }
    
    int main(int argc, char *argv[])
    {
        atexit(exit_handler1);
        atexit(exit_handler2);
        return 0;
    }
    

    程序产生的输出:

    Inside exit_handler2()!
    Inside exit_handler1()!
    

答案 1 :(得分:0)

如果我没有出错,你会询问退出计划时的结果。您应该使用exit(x);函数从程序中返回值。您可以将任何整数值作为参数x。并且不要忘记在程序启动时使用#include <stdlib.h>

答案 2 :(得分:0)

看这里你会发现你想要的一切: http://www.cplusplus.com/reference/cstdlib/exit/

我在这里添加了一个新链接,看看:

Exception libraries for C (not C++)