Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/wait.h>
  5.  
  6. define MAXLINE 1024   /* max line size */
  7.  
  8. int Dup2(int oldfd, int newfd);
  9.  
  10. int Dup2(int oldfd, int newfd) {
  11.     int ret_val;
  12.     ret_val = dup2(oldfd, newfd);
  13.     if (ret_val == -1) {
  14.         fprintf(stderr, "fd redirection failed\n");
  15.         exit(-1);
  16.     }
  17.     return ret_val;
  18. }
  19.  
  20. int main() {
  21.     char str_buf[MAXLINE];
  22.     int fds[2], wait_status, tty;
  23.     pid_t pid;
  24.  
  25.     pipe(fds);
  26.  
  27.     pid = fork();
  28.     printf("pid: %d\n", pid);
  29.  
  30.     if (pid == 0) {
  31.         printf("hello???\n");
  32.         Dup2(fds[0], STDIN_FILENO);
  33.         Dup2(fds[1], STDOUT_FILENO);
  34.         printf("Input something: \n");
  35.         fgets(str_buf, MAXLINE, stdin);
  36.         close(fds[0]);
  37.         printf("CHILD: writing to pipe...\n");
  38.         write(fds[1], str_buf, MAXLINE);
  39.         exit(0);
  40.     } else {
  41.         waitpid(pid, &wait_status, 0);
  42.         printf("wait_status: %d\n", WIFEXITED(wait_status));
  43.         close(fds[1]);
  44.         printf("PARENT:\n");
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement