diff options
[SP/P01] Solved exercises from first practice (again)
1 files changed, 31 insertions, 0 deletions
| -rw-r--r-- | Year 3/System programming/Practice01/ex3-cmp.c | 31 |
diff --git a/Year 3/System programming/Practice01/ex3-cmp.c b/Year 3/System programming/Practice01/ex3-cmp.c new file mode 100644 index 0000000..19bc336 --- /dev/null +++ b/Year 3/System programming/Practice01/ex3-cmp.c @@ -0,0 +1,31 @@ +#include <unistd.h> // ssize_t, read, write +#include <fcntl.h> // open, close, O_RDONLY, ... +#include <stdio.h> // perror + +// exit 0 - equal +// exit 1 - different +int main(int argc, char* argv[]) { + int f1 = open(argv[1], O_RDONLY); + if (f1 < 0) { + perror("open"); + return 2; + } + + int f2 = open(argv[2], O_RDONLY); + if (f2 < 0) { + perror("open"); + return 3; + } + + char buf1, buf2; + ssize_t read1, read2; + do { + read1 = read(f1, &buf1, 1); + read2 = read(f2, &buf2, 1); + if (buf1 != buf2) return 1; + } while (read1 > 0 && read2 > 0); + if (read1 != read2) return 1; + + close(f1); + close(f2); +} |
