/* 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 #include #include 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; }