exit和_exit函数和atexit函数

相对于return函数,exit和_exit是用于专门退出进程的函数,而return不是用于专门退出进程的,只是执行mian函数时,return可以退出进程。(return退出当前函数执行的栈空间,并返回当前函数执行的结果)

void _exit(int status);
功能:退出当前进程(系统调用不会刷新缓冲区)
参数:
    @status:进程退出状态(status & 0377)[0-255]
 #define EXIT_FAILURE	1 /* Failing exit status.  */
 #define EXIT_SUCCESS	0 /* Successful exit status.  */
返回值:无
void exit(int status);
功能:退出当前进程(库函数会刷新缓冲区)
参数:
    @status:进程退出状态(status & 0377)
    #define EXIT_FAILURE	1 /* Failing exit status.  */
 #define EXIT_SUCCESS	0 /* Successful exit status.  */
返回值:无

exit实例    刷新缓冲区 输出1 2

#include <head.h>
void func()
{
    printf("1\n");
    printf("2");
    exit(20);  //退出进程,刷新缓冲区,子进程退出,父进程没有回收资源,子进程是僵尸态
    printf("3\n");//进程退出了,这句话不会执行
}
int main(int argc, const char *argv[])
{
    pid_t pid;
    pid = fork();
    if (pid == -1)
    {
        perror("fork error");
        exit(-1);
    }
    else if (pid == 0)
    {
        // 子进程
        func();
    }
    else
    {
        // 父进程
        while (1)
        {
        }
    }
    return 0;
}

_exit实例  输出 1

#include <head.h>
void func()
{
    printf("1\n");
    printf("2");
    _exit(20);  //退出进程,刷新缓冲区,子进程退出,父进程没有回收资源,子进程是僵尸态
    printf("3\n");//进程退出了,这句话不会执行
}
int main(int argc, const char *argv[])
{
    pid_t pid;
    pid = fork();
    if (pid == -1)
    {
        perror("fork error");
        exit(-1);
    }
    else if (pid == 0)
    {
        // 子进程
        func();
    }
    else
    {
        // 父进程
        while (1)
        {
        }
    }
    return 0;
}

 

在main函数中遇到return后还能够调用其他函数?

可以,通过atexit函数完成回调函数的注册

#include <head.h>
void func(void)
{
    printf("11111111111111111\n");
}
int main(int argc,const char * argv[])
{
    // 注册进程退出后被回调的函数
    atexit(func);//注册 还没调用
    printf("%s:%s:%d\n",__FILE__,__func__,__LINE__);
    return 0;
}

相关推荐

  1. exit_exit函数atexit函数

    2024-06-17 02:52:03       7 阅读
  2. exit()、_exit()_Exit()终止程序运行

    2024-06-17 02:52:03       29 阅读
  3. 【Python】上下文管理协议__enter____exit__函数

    2024-06-17 02:52:03       14 阅读
  4. 【C语言】exit函数详解

    2024-06-17 02:52:03       35 阅读
  5. typedef,#define,asserr,exit函数,free函数

    2024-06-17 02:52:03       12 阅读
  6. 【Vue】$emitsprops

    2024-06-17 02:52:03       14 阅读
  7. MYSQL inexists

    2024-06-17 02:52:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 02:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 02:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 02:52:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 02:52:03       20 阅读

热门阅读

  1. GitHub项目里的api

    2024-06-17 02:52:03       7 阅读
  2. 算法训练营day60

    2024-06-17 02:52:03       8 阅读
  3. 15. 三数之和

    2024-06-17 02:52:03       5 阅读
  4. 【C++】类相关知识

    2024-06-17 02:52:03       7 阅读
  5. ubuntu commands

    2024-06-17 02:52:03       6 阅读
  6. 【Linux】如何查看网卡驱动

    2024-06-17 02:52:03       10 阅读
  7. MySql 数据库、表常用语句

    2024-06-17 02:52:03       5 阅读
  8. Linux 常用命令

    2024-06-17 02:52:03       5 阅读
  9. 简单的线程池示例

    2024-06-17 02:52:03       8 阅读