実行中のプロセスを終了せずに C プログラムからコアを生成したいと考えています。OSはソラリスです。
この目的で gcore を使用できることはわかっています。しかし、C プログラムから「gcore」を使用する方法がわかりません。
実行中のプロセスを終了せずに C プログラムからコアを生成したいと考えています。OSはソラリスです。
この目的で gcore を使用できることはわかっています。しかし、C プログラムから「gcore」を使用する方法がわかりません。
gcore
は C で実装されており、ソースが利用可能であるため、その機能を複製することは明らかに可能です。libproc
ただし、ソースを見ると、コアダンプを生成するコードがかなり複雑なセミプライベート ライブラリが使用されていることがわかります。
またはそのバリアントの一部をgcore
使用して呼び出すのが最良のオプションのようです。system(3)
int gcore(pid_t pid)
{
char *cmd[256];
snprintf(cmd, sizeof cmd, "gcore %ld", (long) pid);
// returns 0 on success, -1 on system failure (errno set), or >0 on
// gcore failure (in which case use the W* macros defined in
// <sys/wait.h> to extract additional information from value).
return system(cmd);
}