#include #include #include #include #include #include int main(int argc, char *argv[]) { char buf[255]; int s; FILE *f; pid_t pid; switch((pid = fork())) { case 0: sprintf(buf, "gdb %s %i", argv[0], getppid()); f = popen(buf, "w"); fprintf(f, "bt\n"); fprintf(f, "quit\n"); fflush(f); wait(&s); pclose(f); break; case -1: return 1; default: waitpid(pid, &s, 0); } return 0; }