2012-03-20 60 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