Desert Ice Desert Ice - 1 month ago 9
Linux Question

What is the maximum allowed limit on the length of a process name?

What is the maximum length allowed for a process name? I am reading the process name from

/proc/[pid]/stat
file and i would like to know the maximum buffer that i would need.

I am pretty sure there is a limit which is configurable but just can't find out where this is.

Answer

I don't know whether that's the answer for sure, but according to man 2 prctl:

PR_SET_NAME (since Linux 2.6.9)

Set the name of the calling thread, using the value in the location pointed to by (char *) arg2. The name can be up to 16 bytes long, and should be null-terminated if it contains fewer bytes.

So I'd go for a 16 bytes long buffer.


EDIT:

Let me back this up a little more.

Each process in Linux corresponds to a struct task_struct in the kernel, which is defined in include/linux/sched.h.

In this definition, there's a field char comm[TASK_COMM_LEN], which according to the comment refers to the executable name excluding the path:

    char comm[TASK_COMM_LEN]; /* executable name excluding path
                                 - access with [gs]et_task_comm (which lock
                                   it with task_lock())
                                 - initialized normally by setup_new_exec */

Its size, TASK_COMM_LEN, is defined above in the same header file, here, to be 16 bytes:

/* Task command name length */
#define TASK_COMM_LEN 16

Furthermore, quoting LDD3 page 22:

...

the following statement prints the process ID and the command name of the current process by accessing certain fields in struct task_struct :

printk(KERN_INFO "The process is \"%s\" (pid %i)\n",
        current->comm, current->pid);

The command name stored in current->comm is the base name of the program file (trimmed to 15 characters if need be) that is being executed by the current process.


I'd go for 16 bytes long buffer.

Comments