The signal itself will not affect the execution of the current thread and, therefore, the call of destructors, because it is a different execution context with its own stack, where your objects do not exist. It's like an interrupt: it is processed somewhere outside the execution context, and, if processed, the control returns to your program.
As with multithreading, C ++ does not know the concept of signals. The two are completely orthogonal to each other and are defined by two unrelated standards. How they interact depends on the implementation if it does not violate any of the standards.
As a side note, another case is that the destructor object will not be called when its constructor throws an exception. However, the destructors of the participants will be called.
Alex B Jul 05 2018-10-05T00: 00Z
source share