[英]How to change the name of forked processes on Solaris in C?
我有一個分叉多個子進程的服務器應用程序。 當使用ps
, top
或prstat
顯示進程時,它們的顯示與父進程完全相同。 我可以通過它們的pid
和ppid
找出哪個是父母和孩子,但是很快就變得困難了。 我想稍微更改子進程的名稱,以便我快速查看該執行的操作。
我嘗試了幾種技巧,這些技巧都可以在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.