What is the maximum length allowed for a process name? I am reading the process name from
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.
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
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 */
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
printk(KERN_INFO "The process is \"%s\" (pid %i)\n", current->comm, current->pid);
The command name stored in
current->commis 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.