atexit

    0熱度

    1回答

    來源:https://sourcemaking.com/design_patterns/to_kill_a_singleton 有一件事是肯定的:如果 單析構函數依賴於彼此,你不能使用一個以上的驅逐艦。另一種方法是讓 完全避開驅逐艦,並依靠草稿標準 atexit()函數,正如Tim Peierls向我建議的那樣:我堅持認爲atexit()是清理C++中單例的好方法,當你真的想要 想要具有程序生命周

    6熱度

    1回答

    當我們的UNIX/C程序需要緊急出口時,我們使用exit(3)函數並安裝atexit(3)處理程序進行應急清理。這種方法運行良好,直到我們的應用程序被線程化,此時atexit()處理程序停止工作,可以預測。 我們瞭解到通過試驗,線程可能已經死在的atexit()處理錯誤,和他們的籌碼釋放。 我沒有在標準鏈接線程中找到一個引用使用atexit()函數消失:線程在從main()返回後不再存在,但是在調

    -1熱度

    1回答

    功能:int atexit (void (*function) (void)) 允許我們多次調用相同的出口處理函數。你爲什麼會多次撥打出口處理員? 你能給我一個例子,它可以多次調用同一個退出處理程序。

    2熱度

    3回答

    我在Rust中創建終端文本編輯器。編輯器將終端置於原始模式,禁用字符回顯等,然後在退出時恢復原始終端功能。 但是,由於諸如無符號變量下溢等問題,編輯器有一些錯誤,並且意外崩潰。發生這種情況時,將終端恢復到其原始狀態的清除代碼將不會運行。 的清理功能,我想運行如下: fn restore_orig_mode(editor_config: &EditorConfig) -> io::Result<()

    2熱度

    1回答

    這是另一個flask dev服務器重新加載器問題。有一百萬個問題問爲什麼它將所有東西加載兩次,而這不是其中之一。我知道它將所有東西加載了兩次,我的問題涉及到處理這個現實,我還沒有找到一個答案,我想解決我想要做的。 我的問題是,我如何清理出口處的所有應用程序對象? 我目前的做法如下所示。在這個例子中,我使用atexit函數運行我的清理代碼。 from flask import Flask app

    1熱度

    2回答

    我有一個析構函數,即使程序不正確地終止以確保外部進程死亡,也需要調用析構函數。 目前我已經註冊要調用的析構函數 std::atexit(killprocess); std::at_quick_exit(killprocess); 然而,這意味着該方案已完成,但沒有終止時,進程沒有中止。有什麼方法可以確保killprocess或析構函數在退出或程序完成但未終止時調用? 編輯:完成但未終止的狀態

    3熱度

    1回答

    我有一個在後臺運行的python進程,我希望它只在腳本終止時才生成一些輸出。 def handle_exit(): print('\nAll files saved in ' + directory) generate_output() atexit.register(handle_exit) 調用養KeyboardInterupt例外,sys.exit()電話hand

    0熱度

    1回答

    我想添加一些自定義代碼到我們的內部libc相關的atexit處理。 在我們的libc中,我們定義了這個,因爲我們鏈接到自定義的CRT文件,並且不使用定義它的GCC。 void *__dso_handle __attribute__((__visibility__("hidden"),__weak__)) = &__dso_handle; GCC還在鏈接它們時將其添加到二進制文件中。 在libc

    0熱度

    1回答

    所以我有3個文件; main.c中,file.c file.h 在file.h我宣佈3個變量 extern clock_t start_t, end_t, total_t; 在file.c 我寫了一個功能,節省的主要運行程序的時間長度; 和file.h我引用它爲「void saveLog(void);」 void saveLog(void) { end_t = clock(); tota

    4熱度

    2回答

    我試圖避免Valgrind的誤報,但我吸了atexit()和fork()的組合,儘管使用--trace-children=yes。我的代碼: #include <stdio.h> #include <unistd.h> #include <stdlib.h> static int * arr; static void cleanup() { free(arr); p