依据进程号获取进程名函数

根据进程号获取进程名函数

static gchar *
pid_to_binary_name (gint pid)
{
  gchar * cmd_f;
  FILE  * fcmd;

  if (pid <= 0)
    return NULL;

  cmd_f = g_strdup_printf ("/proc/%d/cmdline", pid);
  fcmd  = fopen (cmd_f, "r");

  g_free (cmd_f);

  if (fcmd)
    {
      gchar buf[256];
      if (fgets (buf, sizeof (buf), fcmd))
        {
          /*
           * 0-terminate at first whitespace.
           */
          gchar *n = &buf[0];
          while ((n < &buf[0] + sizeof(buf) - 1) && *n && !g_ascii_isspace (*n))
            ++n;

          *n = 0;

          return g_path_get_basename (buf);
        }

      fclose (fcmd);
    }

  return NULL;
}