【发布时间】:2013-10-07 19:10:07
【问题描述】:
这是一个学校作业。
所以基本上我已经为 shell 编写了一个 C 代码,它使用& 处理终止命令,并使用> 或<. 使用管道和fork()、execvp() 进行输入/输出重定向。
问题是我的输入/输出重定向只处理已经存在的文件。
我需要知道的是如何将输出重定向到一个不存在的文件 - 我知道我必须创建该文件,但我不确定它是如何工作的。
例如:ls -a < test.txt
如果 test.txt 不在目录中,我需要创建它并将输出重定向到该目录。 那么如何创建这个文件呢?
这里是一些基本的示例代码,它不会创建新文件:
else if( '>' == buff[i] ){
i++;
j=0;
if( ' ' == buff[i] )
i++;
while( ' ' != buff[i] && i < len )
out_file[j++]=buff[i++];
out_file[j]='\0';
if ( ( ofd = open(out_file,1) ) < 0 ){
perror("output redirected file");
exit( 1 );
}
close(1);
dup(ofd);
}
任何有关如何输出和创建新文件的帮助将不胜感激!谢谢!
【问题讨论】:
-
小技术说明:您的意思是
ls -a > test.txt?