本文整理汇总了C++中KTempFile::handle方法的典型用法代码示例。如果您正苦于以下问题:C++ KTempFile::handle方法的具体用法?C++ KTempFile::handle怎么用?C++ KTempFile::handle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类KTempFile
的用法示例。
在下文中一共展示了KTempFile::handle方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
void
Crash::crashHandler( int /*signal*/ )
{
// we need to fork to be able to get a
// semi-decent bt - I dunno why
const pid_t pid = ::fork();
if( pid < 0 )
{
std::cout << "forking crash reporter failed\n";
// continuing now can't do no good
_exit( 1 );
}
else if ( pid == 0 )
{
// we are the child process (the result of the fork)
std::cout << "Pana is crashing...sorry this will be a minute...\n";
QString subject = APP_VERSION " ";
QString body = i18n(
"Pana has crashed.\n\n"
"Please help us fix it by clicking send on the crash report, "
"If you have time please add a brief description of what was happening just before the crash.\n\n"
"Thank you very much.\n\n" );
body += i18n( "\n\n\n\n\n\n"
"The information below is to help identify the problem.\n\n\n ");
body += "=== Debug information ===\n"
"Version: " APP_VERSION "\n"
"Engine: %1\n"
"Build date: " __DATE__ "\n"
"CC version: " __VERSION__ "\n"
"KDElibs: " KDE_VERSION_STRING "\n"
"Qt: %2\n"
"TagLib: %3.%4.%5\n"
"CPU count: %6\n";
QString cpucount = "unknown";
#ifdef __linux__
QString line;
uint cpuCount = 0;
QFile cpuinfo( "/proc/cpuinfo" );
if ( cpuinfo.open( IO_ReadOnly ) ) {
while ( cpuinfo.readLine( line, 20000 ) != -1 ) {
if ( line.startsWith( "processor" ) ) {
++cpuCount;
}
}
}
cpucount = QString::number( cpuCount );
#endif
body = body.arg( PanaConfig::soundSystem() )
.arg( qVersion() )
.arg( TAGLIB_MAJOR_VERSION )
.arg( TAGLIB_MINOR_VERSION )
.arg( TAGLIB_PATCH_VERSION )
.arg( cpucount );
#ifdef NDEBUG
body += "NDEBUG: true";
#endif
body += '\n';
/// obtain the backtrace with gdb
KTempFile temp;
temp.setAutoDelete( true );
const int handle = temp.handle();
// QCString gdb_command_string =
// "file panaapp\n"
// "attach " + QCString().setNum( ::getppid() ) + "\n"
// "bt\n" "echo \\n\n"
// "thread apply all bt\n";
const QCString gdb_batch =
"bt\n"
"echo \\n\\n\n"
"bt full\n"
"echo \\n\\n\n"
"echo ==== (gdb) thread apply all bt ====\\n\n"
"thread apply all bt\n";
::write( handle, gdb_batch, gdb_batch.length() );
::fsync( handle );
// so we can read stderr too
::dup2( fileno( stdout ), fileno( stderr ) );
QCString gdb;
gdb = "gdb --nw -n --batch -x ";
gdb += temp.name().latin1();
gdb += " panaapp ";
gdb += QCString().setNum( ::getppid() );
//.........这里部分代码省略.........