Advertisement
mrAnderson33

третья лаба unix(процессы)

Mar 25th, 2017
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.00 KB | None | 0 0
  1. /* тз :
  2. Написать программу, которая создает дочерний процесс, выполняет в нем команду “ps -aux” и результат возвращается обратно родительскому процессу, который записывает этот результат в файл. */
  3.  
  4. #include <stdio.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. #include <sys/stat.h>
  8. #include <fcntl.h>
  9.  
  10. int main (int argc, char * argv[])
  11. {
  12. int fd = open(argv[1],O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
  13.  dup2(fd,1);
  14.  close(fd);
  15.  int pipefd[2];
  16.  pipe(pipefd);
  17. if (fork() == 0)
  18. {
  19.   close (pipefd[0]);
  20.  
  21.   dup2(pipefd[1], 1);
  22.   dup2(pipefd[1],2);
  23.  
  24.   close(pipefd[1]);
  25.  printf("My pid = %d\n", getpid());
  26.  printf("Parents pid = %d\n", getppid());  
  27.  execl("/bin/ps","ps","-aux",NULL);
  28.  }
  29.  
  30. else
  31. {
  32.   char buffer[1024];
  33.  
  34.   close(pipefd[1]);
  35.   while(read(pipefd[0],buffer,sizeof(buffer)) != 0)
  36.       printf("%s\n",buffer);
  37. }
  38.  
  39.   return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement