您的位置:首页 > 其它

printf call statck for signal/coredump

2015-10-19 10:31 302 查看
#include<unistd.h>

#include <stdio.h>

#include <signal.h>

#include <errno.h>

void

COOLsighdlr( int sig )

{

int i;

char cmd[256];

char inbuf[256];

FILE *ptr;

printf( "Process received signal %d.n");

sprintf(cmd, "pstack %d", getpid());

if( (ptr = popen(cmd, "r")) != NULL )

{

while( fgets(inbuf, sizeof(inbuf), ptr) != NULL)

{

printf("%s", inbuf);

}

pclose(ptr);

}

else

{

printf("Cannot get stack backtrace errno %d %s\n", errno, strerror(errno));

}

exit( 5 );

}

b() {

pid_t pid;

pid=getpid();

kill(pid,SIGALRM);

while (1) {

sleep (1);

}

}

a() {

b();

}

main () {

signal (SIGALRM, COOLsighdlr);

a();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: