c - 如何确保我正在启动的程序将其标准输出写入我打开的 FD?
问题描述
我正在尝试为我的 shell 实现>
和<
重定向,但就我而言,假设我这样做ls > output.txt
了,它会创建一个新文件,但不会将其写入文件中。这是我的代码的预览:
pid = fork();
if (pid == 0){
int i = 0;
for (i=0; args[i]!='\0'; i++){
int fd;
if (strcmp(args[i], ">")==0){
fd = open(args[i+1], O_CREAT|O_TRUNC | O_WRONLY, 0600);
dup2(fd, STDOUT_FILENO);
close(fd);
}
if(strcmp(args[i], "<")==0){
fd = open(args[i+1],O_RDONLY);
dup2(fd, STDOUT_FILENO);
close(fd);
}
解决方案
试试这个 >> 而不是 >
'>>' 附加在文件末尾