如何在C中实现单个I/O流?即a> b
下面的代码没有像我希望的那样将文本从input.txt传输到output.txt。
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
int main(void)
{
int fd = open("/home/ubuntu/workspace/file2.txt", O_WRONLY|O_CREAT);
if (fd < 0)
{
fprintf(stderr, "Failed to open file2.txt for writingn");
return(EXIT_FAILURE);
}
dup2(fd, 1);
close(fd);
execlp("a.out", "a.out", "file1.txt", NULL);
}
如果您不强制使用exec
,您可以使用简单的代码将file1.txt写入指定的输出文件:
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BUFFSIZE 10240
int main(int argc, char *argv[]) {
int n, t, i;
char buf[BUFFSIZE];
t = open("file1.txt", O_RDONLY);
while ((n = read(t, buf, BUFFSIZE)) > 0) {
if (write(STDOUT_FILENO, buf, n) != n) {
perror("Write Error");
}
}
if (n < 0) {
perror("Read Error");
}
if (close(t) == -1) {
perror("Closing Error");
}
exit(0);
}
测试./a.out a > c
dac@dac-Latitude-E7450 ~/C/twodec> more c
foo bar
bletch
blahonga