[PATCH] child process synchronization NIC startup parameters
Stephen Hemminger
stephen at networkplumber.org
Fri Jun 14 01:23:38 CEST 2024
On Wed, 5 Jul 2023 17:35:14 +0800
Kaisen You <kaisenx.you at intel.com> wrote:
>
> +/* get cmdline form PID. Read process info form /proc/$PID. */
> +static char *get_cmdline_from_pid(pid_t pid, char *buf, int len)
> +{
> + char filename[PATH_MAX];
> + char *name = NULL;
> + int fd;
> + int ret;
> +
> + if (pid < 1 || buf == NULL || len < 0) {
> + printf("%s: illegal param\n", __func__);
> + return NULL;
> + }
> +
> + snprintf(filename, PATH_MAX, "/proc/%d/cmdline", pid);
> + memset(buf, 0, len);
> + fd = open(filename, O_RDONLY);
> + if (fd < 0) {
> + perror("open:");
> + return NULL;
> + }
> + ret = read(fd, buf, len);
> + close(fd);
> +
> + if (ret < 0)
> + return NULL;
> +
> + if (buf[ret-1] == '\n')
> + buf[--ret] = 0;
> +
> + name = buf;
> + while (ret) {
> + if (((unsigned char)*name) < ' ')
> + *name = ' ';
> + name++;
> + ret--;
> + }
> + *name = 0;
> +
> + if (buf[0])
> + return buf;
> +
> + return NULL;
> +}
Bad idea, this is not portable, and easily broken by system changes and container
environments. Please use some form of explicit communication like is done
for primary / secondary process support.
More information about the dev
mailing list