进程和dup2重定向

时间:2014-05-18 08:46:19

标签: c process exec dup2

我在学校遇到问题,但我真的不明白我需要做什么。

  • "主程序为每个职位创建一个新流程 争论和我+1。
  • 进程又创建了两个将要发布的附加进程 exec使用了两个参数。
  • 使用dup2将重定向第一个进程的输出(一个 对待论证i)第二个过程(与...相关的过程) i +1)。

实施例

  • i:ls i + 1:sort,
  • i:last i + 1:head,

有谁能告诉我我需要做什么?非常感谢。

编辑:

    #include <unistd.h>
#include <stdio.h>
#include <sys/types.h>

#define STDIN 0
#define STDOUT 1

int main()
{
  int fd[2];
  int pid;
  char *lschar[20]={"last",NULL};
  char *morechar[20]={"head", NULL};
  pid = fork();
  if (pid == 0) {
    /* child */
    int cpid;
    pipe(fd);
    cpid = fork();
    if(cpid == 0) {
      //printf("\n in ls \n");
      dup2(fd[1], STDOUT);
      close(fd[0]);
      close (fd[1]);
      execvp("last",lschar);
    } else if(cpid>0) {
      dup2(fd[0],STDIN);
      close(fd[0]);
      close(fd[1]);
      execvp("head", morechar);
    }
  } else if (pid > 0) {
    /* Parent */
    waitpid(pid, NULL,0);
  }
  return 0;
}

0 个答案:

没有答案