myth4> cat alphabet.txt | tee one.txt two.txt three.txt
abcdefghijklmnopqrstuvwxyz
myth4> cat one.txt
abcdefghijklmnopqrstuvwxyz
myth4> cat two.txt
abcdefghijklmnopqrstuvwxyz
myth4> diff one.txt two.txt
myth4> diff one.txt three.txt
myth4>
myth4> more vowels.txt | tee one.txt
aeiou
myth4> more one.txt
aeiou
myth4> more two.txt
abcdefghijklmnopqrstuvwxyz
myth4>
Implementation of t
static void writeall(int fd, const char buffer[], size_t len) {
size_t numWritten = 0;
while (numWritten < len) {
numWritten += write(fd, buffer + numWritten, len - numWritten);
}
}
int main(int argc, char *argv[]) {
int fds[argc];
fds[0] = STDOUT_FILENO;
for (size_t i = 1; i < argc; i++)
fds[i] = open(argv[i], O_WRONLY | O_CREAT | O_TRUNC, 0644);
char buffer[2048];
while (true) {
ssize_t numRead = read(STDIN_FILENO, buffer, sizeof(buffer));
if (numRead == 0) break;
for (size_t i = 0; i < argc; i++)
writeall(fds[i], buffer, numRead);
}
for (size_t i = 1; i < argc; i++) close(fds[i]);
return 0;
}