Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change process name without changing argv[0] in Linux

I need to modify the process name of my program in C language.
I precise, this is not the name of a thread that I want to change.
I want to change the name of my program, but the only solution I found, is to modify the value of argv[0].
I also found another solution with prctl(PR_SET_NAME, "newname"), but this solution doesn't work.

like image 513
Jérémy Magrin Avatar asked Apr 23 '13 09:04

Jérémy Magrin


People also ask

How do I change a process name in Linux?

With recent kernels you can also do prctl(PR_SET_NAME, (unsigned long) "My Process", 0, 0, 0); - but not all utilities use that name as the default display name (top does, ps does not) and it has a limit of 16 characters.


1 Answers

The differences between invoking prctl and modify argv[0] are:

  • modify argv[0] changes information in /proc/$pid/cmdline
  • invoking prctl(PR_SET_NAME) changes information in /proc/$pid/status

That means you will get difference name of your process issuing ps -a and ps -ax.

If you expects same process name for different arguments while executing ps, you can do them both (i.e., change argv[0] and invoke prctl).

Hope the answer helps.

like image 96
Wayne Avatar answered Sep 28 '22 06:09

Wayne