Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::abort(3)		      C++ Standard Libary		 std::abort(3)

NAME
       std::abort - std::abort

Synopsis
	  Defined in header <cstdlib>
	  void abort();			       (until C++11)
	  [[noreturn]] void abort() noexcept;  (since C++11)

	  Causes  abnormal  program termination	unless SIGABRT is being	caught
       by a signal
	  handler passed to std::signal	and the	handler	does not return.

	  Destructors of variables with	automatic,
	  thread local
	  (since C++11)	and static storage durations are not called. Functions
       registered with
	  std::atexit()
	  and std::at_quick_exit
	  (since C++11)	are also not called. Whether open  resources  such  as
       files are closed
	  is  implementation  defined. An implementation defined status	is re-
       turned to the host
	  environment that indicates unsuccessful execution.

Parameters
	  (none)

Return value
	  None because it does not return.

Exceptions
	  Throws nothing.

Notes
	  POSIX	specifies that the abort() function overrides blocking or  ig-
       noring the SIGABRT
	  signal.

	  Some	compiler intrinsics, e.g. __builtin_trap (gcc, clang, and icc)
       or __debugbreak
	  (msvc), can be used to terminate the program as fast as possible.

Example
       // Run this code

	#include <csignal>
	#include <iostream>
	#include <cstdlib>

	class Tester {
	public:
	    Tester()  {	std::cout << "Tester ctor\n"; }
	    ~Tester() {	std::cout << "Tester dtor\n"; }
	};

	Tester static_tester; // Destructor not	called

	void signal_handler(int	signal)
	{
	    if (signal == SIGABRT) {
		std::cerr << "SIGABRT received\n";
	    } else {
		std::cerr << "Unexpected signal	" << signal << " received\n";
	    }
	    std::_Exit(EXIT_FAILURE);
	}

	int main()
	{
	    Tester automatic_tester; //	Destructor not called

	    // Setup handler
	    auto previous_handler = std::signal(SIGABRT, signal_handler);
	    if (previous_handler == SIG_ERR) {
		std::cerr << "Setup failed\n";
		return EXIT_FAILURE;
	    }

	    std::abort();  // Raise SIGABRT
	    std::cout << "This code is unreachable\n";
	}

Output:
	Tester ctor
	Tester ctor
	SIGABRT	received

See also
	  exit		causes normal program termination with cleaning	up
			(function)
	  atexit	registers a function to	be called on std::exit() invo-
       cation
			(function)
	  quick_exit	causes quick program  termination  without  completely
       cleaning	up
	  (C++11)	(function)
	  at_quick_exit	 registers  a function to be called on std::quick_exit
       invocation
	  (C++11)	(function)
	  signal	sets a signal handler for particular signal
			(function)
	  terminate	function called	when exception handling	fails
			(function)

http://cppreference.com		  2022.07.31			 std::abort(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::abort&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help