Cùng ý tưởng như code hacker's answer, nhưng biên dịch được, với xử lý lỗi, và nếu không có sự zombie:
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int
coredump(void)
{
pid_t p,r;
if(0>(p=fork()))
return -1;
if(0==p)
abort() /*child*/;
/*reap zombie*/
do r=waitpid(p,0,0); while(0>r && EINTR==errno);
if(0>r) {
perror("waitpid shouldn't have failed");
abort();
}
return 0;
}
này vẫn có sự thiếu hụt khá rõ ràng ở chỗ là nó sẽ không làm việc với quá trình đa luồng.
Từ đây: http://stackoverflow.com/questions/318647/what-is-a-good-way-to-dump-a-linux-core-file-from-inside-a-process. Đây không phải là cuộc gọi hệ thống mà là một thư viện 'google-coredumper' http://code.google.com/p/google-coredumper. –