Linux下C編程經驗積累-atexit註冊的自訂exit函數的觸發時機

來源:互聯網
上載者:User
我們都知道,可以用atexit來註冊一個我們自己寫的函數作為exit函數,也就是說,在程式退出的時候,會調用到我們的這個自訂exit函數。問題是:

在Linux下終結一個C程式,最普遍的有兩種做法:

1、在main函數中調用return
2、在任何地方調用 "exit" system call

實驗證明,這兩種方法都會觸發我們自訂的exit函數,寫的測試程式如下:

Code: Select all
#include "apue.h"

static void my_exit(void);

int main(void)
{
    if (atexit(my_exit) != 0)
        err_sys("can't register my_exit");
   
    return 0;
    printf("main is done\n");
    //return 0;
}

static void my_exit(void)
{
    printf("Stuff print in my_exit\n");
}

可以參考APUE2一書的P150頁,有更詳細的說明和例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.