如何在C中更改Solaris上的分叉进程的名称?

时间:2012-01-23 15:47:20

标签: c solaris

我有一个服务器应用程序,它会分叉几个子进程。使用pstopprstat显示流程时,它们的显示方式与父流程完全相同。我可以通过他们的pidppid找出父母和孩子,但很快就会遇到困难。我想略微更改子进程的名称,以便我可以快速查看哪些做了什么。

我尝试了一些在Linux上发挥作用的技巧,但它们并不适用于Solaris。有没有人知道如何做到这一点,最好是在简单的C中。

1 个答案:

答案 0 :(得分:1)

其中一种方法是为子进程创建一个真正的可执行程序,并从fork中调用exec方法之一。

这样分叉的进程将被新的可执行文件“替换”。

这些方面的东西:

  pid_t child_pid = fork( );

  switch ( child_pid )
  {
  case -1:
    die( );
    return;

  case 0:
    // setup argv ...
    static const char* argv[] =
    {
      "prog_name",
      NULL
    };

    execv( *argv, (char**) argv );
    // No code should be executed beyond this point

    fprintf(
      stderr,
      "%s fork: execv failed: %d (%s)\n",
      argv[ 0 ],
      errno,
      strerror( errno )
    );

    die( );
    return;
  default:
    break;
 }