簡體   English   中英

如何在C中的Solaris上更改分叉進程的名稱?

[英]How to change the name of forked processes on Solaris in C?

我有一個分叉多個子進程的服務器應用程序。 當使用pstopprstat顯示進程時,它們的顯示與父進程完全相同。 我可以通過它們的pidppid找出哪個是父母和孩子,但是很快就變得困難了。 我想稍微更改子進程的名稱,以便我快速查看該執行的操作。

我嘗試了幾種技巧,這些技巧都可以在Linux上完美地工作,但是在Solaris上卻不能。 有誰知道這樣做的可能性,最好是在純C語言中。

一種方法是為子進程創建一個真正的可執行程序,然后從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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM