进程的退出

复制代码
#include <stdio.h>
#include <stdlib.h>

static void atexitFunc1(void) {
    printf("atexit function 1 called.\n");
}

static void atexitFunc2(void) {
    printf("atexit function 2 called.\n");
}

static void onexitFunc(int exitStatus, void *arg) {
    printf("on_exit function called: status=%d, arg=%ld\n", exitStatus, (long)arg);
}

int main() {
    if(on_exit(onexitFunc, (void*)10)!=0) {
        printf("on_exit 1");
        return -1;
    }
    if(atexit(atexitFunc1) != 0) {
        printf("atexit 1");
        return -1;
    }
    if(atexit(atexitFunc2) != 0) {
        printf("atexit 2");
        return -1;
    }
    if(on_exit(onexitFunc, (void*)20) != 0) {
        printf("on_exit 2");
        return -1;
    }

    return 0;
}
复制代码

在进程终止之前,C库会按顺序执行以下关闭进程的步骤。

1)调用任何由atexit()或on_exit()注册的函数,和在系统中注册时顺序相反。

2)清空所有已打开的标准I/O流。

3)删除由tmpfile()函数创建的所有临时文件。

posted @   东宫得臣  阅读(54)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示