我正在为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);
}