3

全部,

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

我对C真的很陌生;都是关于在 C 中管理信号的吗?

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

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

4

3 回答 3

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

  2. 约定是当程序干净退出时,它返回退出状态0。这可以通过return 0程序中的任何地方main()exit(0)任何地方完成。

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

示例:这是一个简单的程序及其输出来演示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()!
于 2013-03-01T09:45:38.017 回答
0

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

于 2013-03-01T09:44:52.793 回答
0

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

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

C(不是 C++)的异常库

于 2013-03-01T09:47:40.933 回答