shell文件重定向

时间:2012-03-07 19:51:30

标签: c shell

我正在为C编写一个shell脚本,我得到了我的程序来执行除文件重定向之外的所有命令。有人可以帮助弄清楚我需要如何进行文件重定向,我知道我需要在fork返回0时执行此操作,但我不知道该怎么做。

任何帮助都将不胜感激。

CODE: 这是我的代码的更新版本。创建文件很好,但后来我不知道该怎么做。我关闭了正确的文件描述符,我认为然后将我的文件描述符复制到最低的开放描述符。除了关闭正确的文件描述符之后你可以帮我做什么吗?

args []是我存储输入的数组(即ls -l,ls -l> out)

if ((cpid = fork()) == 0)
{
  for ( i = 0; i < size; i++)
  {
    if ( *args[i] == '<' )
    {
      if ((fd = open(args[i+1], O_RDONLY)) == -1)
      {
        perror("open");
        exit(2);
      }
      else
      {
        close(0);
        dup(fd);
        close(fd);
      }
    }
    if ( *args[i] == '>' )
    {
      if ((fd = open(args[i+1], O_WRONLY | O_CREAT, 0644)) == -1)
      {
        perror("open");
        exit(2);
      }
      else
      {
        close(1);
        dup(fd);
        close(fd);
      }
    }
  }

  execve(path,args,environ);
  perror("execve");
  exit(2);
}

1 个答案:

答案 0 :(得分:0)

查看dup函数here