Questions tagged [atexit]

atexit(3) is a method for arranging a function to be called at a program's exit time.

162 questions
30
votes
2 answers

How to find exit code or reason when atexit callback is called in Python?

I want to know if a Python script is terminating correctly or not. For this I am using atexit but the problem is that I do not know how to differentiate if atexit was called with sys.exit(0) or non zero or an exception. Reasoning: if program ends…
sorin
  • 161,544
  • 178
  • 535
  • 806
24
votes
4 answers

Run atexit() when python process is killed

I have a python process which runs in background, and I would like it to generate some output only when the script is terminated. def handle_exit(): print('\nAll files saved in ' + directory) …
Chan Jing Hong
  • 2,251
  • 4
  • 22
  • 41
24
votes
1 answer

Order between destruction of global object and atexit in C++

I wonder that can sure order between destruction of global object and atexit in C++ I have a global object and register atexit function like below: static MyClass g_class; void onExit() { // do some destruction } int main() { …
zelon
  • 297
  • 2
  • 8
23
votes
1 answer

dlclose() does not call the destructor of global objects

plugin1.cpp: #include static class TestStatic { public: TestStatic() { std::cout << "TestStatic create" << std::endl; } ~TestStatic() { std::cout << "TestStatic destroy" << std::endl; } } test_static; host.cpp #include…
AndryBlack
  • 233
  • 2
  • 6
22
votes
1 answer

Python Process won't call atexit

I'm trying to use atexit in a Process, but unfortunately it doesn't seem to work. Here's some example code: import time import atexit import logging import multiprocessing logging.basicConfig(level=logging.DEBUG) class W(multiprocessing.Process): …
Brian M. Hunt
  • 81,008
  • 74
  • 230
  • 343
18
votes
2 answers

Python Multiprocessing atexit Error "Error in atexit._run_exitfuncs"

I am trying to run a simple multiple processes application in Python. The main thread spawns 1 to N processes and waits until they all done processing. The processes each run an infinite loop, so they can potentially run forever without some user…
ShimmerTroll
17
votes
2 answers

ruby at_exit exit status

Can i determine selves process exit status in at_exit block? at_exit do if this_process_status.success? print 'Success' else print 'Failure' end end
tig
  • 25,841
  • 10
  • 64
  • 96
15
votes
2 answers

How to register "atexit" function in python's multiprocessing subprocess?

I have some subprocesses (using multiprocessing) and when they stop, each of them need do some final work. Something like the following, which did not work though... import multiprocessing import atexit def final(): print "final work" def…
rongdong.bai
  • 471
  • 1
  • 6
  • 16
14
votes
3 answers

How to register a non-void function with atexit()?

I'm trying to register a function that returns an int to be called at the end of a program using the atexit() function. (Specifically, the endwin() function from ncurses.) But since atexit() needs a pointer to a void function, I ran into a problem.…
Emil Laine
  • 41,598
  • 9
  • 101
  • 157
14
votes
2 answers

Can I undo or remove an atexit command?

If I place atexit( fn ); on the exit stack, it will get executed when the program exits: returns from main() or via exit(). Can I remove it from the stack? Why do I want to do this, you ask? I was experimenting with a simple try-catch mechanism…
philcolbourn
  • 4,042
  • 3
  • 28
  • 33
13
votes
8 answers

Freeing in an atexit()

Is there any point to freeing memory in an atexit() function? I have a global variable that gets malloc'ed after startup. I could write an atexit() function to free it, but isn't the system going to reclaim all that memory when the program exits…
Matt
  • 84,419
  • 25
  • 57
  • 67
12
votes
1 answer

When is a function registered with atexit() called

I want to know if functions registered with atexit() are called before or after global variables are destroyed. Is this specified by the standard or implementation defined?
Mircea Ispas
  • 20,260
  • 32
  • 123
  • 211
11
votes
1 answer

What does the POSIX standard say about thread stacks in atexit() handlers? What's the OS practice?

When our UNIX/C program needs an emergency exit, we use exit (3) function and install atexit (3) handlers for emergency clean-ups. This approach worked fine until our application got threaded, at which point atexit() handlers stopped to work…
Kostja
  • 1,607
  • 10
  • 17
11
votes
2 answers

What are the implications of registering an instance method with atexit in Python?

Assume I've got some really big Python class that might consume a fair amount of memory. The class has some method that is responsible for cleaning up some things when the interpreter exits, and it gets registered with the atexit module: import…
Jed
  • 1,011
  • 1
  • 9
  • 15
10
votes
3 answers

Mixed-mode C++/CLI DLL throws exception on exit

I am having a problem with a C++/CLI mixed mode DLL that I created. It is throwing an exception when unloading as the .NET application that uses it exits. After DLL_PROCESS_DETACH is executed, the DLL does runtime clean-up using automatically…
Mark
  • 510
  • 1
  • 5
  • 18
1
2 3
10 11