2012-03-20 5 views
0

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

КОД:

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); 
     } 

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

+0

Какая ОС? Я предполагаю unix-аромат из вашего первого выхода execlp. – Chris

ответ

0

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

0

getppid()

прибудет Родитель с Pid, ​​проверьте страницы руководства для получения дополнительной информации

pid_t parent_pid = getppid(); 
5

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

+0

На самом деле, я должен использовать exec ... так нет :) –

+0

@JohnSmith Говорит, кто. – cnicutar

+0

мой учитель;)! –

Смежные вопросы