Язык C - Получить владельца процесса - PullRequest
0 голосов
/ 20 марта 2012

Мне нужно использовать семейство EXEC, чтобы найти принадлежащий процессу (пользователь) и записать его в файл.

КОД:

sprintf(buffer, "%d", getpid());

if ((pid = fork()) == -1)
        exit(EXIT_FAILURE);
      else if (pid == 0)
        {
          dup2(fd,STDOUT_FILENO);
          dup2(fd,STDERR_FILENO);

          // function that Write in the file
          fdprintf(fd, "\n%s %s%d secondes %s\n", adornment, toShow, sec, adornment);

          if (execlp("ps", "u", buffer, NULL) == -1)
            show_err("Exelp Error\n");
        }                                                                                                                                                                                                        
      else
        {
          wait(NULL);
          fdprintf(fd, "%s %s%d secondes %s\n", adornment, toShow, sec, adornment);
          close(fd);
        }

любая помощь приветствуется! Спасибо

Ответы [ 3 ]

5 голосов
/ 20 марта 2012

То, что вы делаете, это thedailywtf эквивалент getuid(2). Если вы хотите получить логин, вы можете использовать getpwuid(3).

0 голосов
/ 26 марта 2012

Наконец, я пользователь EXECVE ... У меня отлично работает.

0 голосов
/ 20 марта 2012

getppid ()

получить родительский pid, проверьте man-страницы для получения дополнительной информации

pid_t parent_pid = getppid();
...