From 89aca1f2a06140bf556d5460963be0d213a58657 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 15 Sep 2021 21:41:52 +0200 Subject: [PATCH] mx_proc: Add mx_proc_get_comm Add function to get "comm"-value of a process. --- mx_proc.c | 24 ++++++++++++++++++++++++ mx_proc.h | 1 + 2 files changed, 25 insertions(+) diff --git a/mx_proc.c b/mx_proc.c index 129d7216..4edc2b2a 100644 --- a/mx_proc.c +++ b/mx_proc.c @@ -484,3 +484,27 @@ pid_t mx_proc_get_parent(pid_t pid) { return -1; return parent; } + +/* + * get "comm" value of a process. + * buf MUST point to char[16] array + * return NULL on any error, otherwise pointer to buf + */ +char *mx_proc_get_comm(pid_t pid, char *buf) { + char commfilename[32]; // "/proc/2147483647/comm" = 22 + FILE *commfile; + char *p; + + snprintf(commfilename, sizeof(commfilename), "/proc/%d/comm", pid); + commfile = fopen(commfilename, "r"); + if (commfile == NULL) + return NULL; + p = fgets(buf, 16, commfile); + fclose(commfile); + if (p == NULL) + return NULL; + p = strrchr(buf, '\n'); + if (p != NULL) + *p = '\0'; + return (char *)buf; +} diff --git a/mx_proc.h b/mx_proc.h index 1fe07f6f..d4abcb35 100644 --- a/mx_proc.h +++ b/mx_proc.h @@ -86,4 +86,5 @@ int mx_proc_tree_free(struct mx_proc_tree **tree); struct mx_proc_info *mx_proc_tree_proc_info(struct mx_proc_tree *tree, pid_t pid); pid_t mx_proc_get_parent(pid_t pid); +char *mx_proc_get_comm(pid_t pid, char *buf); #endif