2012-03-20 101 views
0

我必須使用EXEC系列來查找所擁有的進程(用戶)並將其寫入文件。語言C - 獲取進程所有者

CODE:

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

什麼操作系統?我猜你的第一個execlp輸出是unix的味道。 – Chris 2012-03-20 14:12:10

回答

0

最後,我用戶EXECVE ... 它適用於我。

0

getppid()

獲取父PID,檢查手冊頁的詳細信息

pid_t parent_pid = getppid(); 
5

你正在做什麼thedailywtf相當於getuid(2)。如果你想獲得登錄名,你可以使用getpwuid(3)

+0

事實上,我必須使用exec ... so no :) – 2012-03-20 14:22:19

+0

@JohnSmith說誰。 – cnicutar 2012-03-20 14:22:53

+0

我的老師;)! – 2012-03-20 14:25:40