Files
test/test_return_code.cpp

60 lines
1.2 KiB
C++

/* Check cf5-opt.vim defs.
VIM: let g:lcppflags="-std=c++11 -O2"
VIM: let g:cppflags=g:boost.g:tbb.g:tbbmalloc.g:tbbmproxy
VIM: let g:ldlibpath=g:boostld.g:tbbld
VIM: let g:cf5output=0
*/
#include <iostream>
#include <exception>
#include <stdexcept>
void run( const char * cmd )
{
std::cout << cmd << " => ";
int ws = system( cmd );
if ( WIFEXITED(ws) )
std::cout << "return code " << WEXITSTATUS(ws) << std::endl;
else if ( WIFSIGNALED(ws) )
{
std::cout << "signal code " << WTERMSIG(ws);
#if 0
if ( WCOREDUMP(ws) )
std::cout << " and core dump generated." << std::endl;
else
std::cout << " and core dump is not generated." << std::endl;
#endif
std::cout << std::endl;
}
else if ( WIFSTOPPED(ws) )
{
std::cout << "stopped with signal " << WSTOPSIG(ws) << std::endl;
}
else
std::cout << "Child is not terminated normally." << std::endl;
}
int main ( int argc, char ** argv)
{
if ( argc != 1 )
{
std::string arg( argv[1] );
if ( arg == "throw" )
{
throw std::runtime_error( "runtime error" );
}
int r = atoi( arg.c_str() );
return (r) ? r : -1;
}
run("test_return_code.exe 1");
run("test_return_code.exe 2");
run("test_return_code.exe throw");
return 0;
}