1

重複の可能性:
C プログラムが終了せずに自身のコア ダンプを生成するにはどうすればよいですか?

実行中のプロセスを終了せずに C プログラムからコアを生成したいと考えています。OSはソラリスです。

この目的で gcore を使用できることはわかっています。しかし、C プログラムから「gcore」を使用する方法がわかりません。

4

1 に答える 1

1

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);
}

<sys/wait.h>(ドキュメントへのリンク。)

于 2012-11-05T17:55:13.010 に答える