diff options
[SP/P5] Added solutions to some exercises from today
1 files changed, 41 insertions, 0 deletions
| -rw-r--r-- | Year 3/System programming/Practicum5/ex4.c | 41 |
diff --git a/Year 3/System programming/Practicum5/ex4.c b/Year 3/System programming/Practicum5/ex4.c new file mode 100644 index 0000000..682376d --- /dev/null +++ b/Year 3/System programming/Practicum5/ex4.c @@ -0,0 +1,41 @@ +#include <fcntl.h> +#include <unistd.h> +#include <stdio.h> +#include <sys/wait.h> + +int main() { + int f1 = open("read.txt", O_RDONLY); + if (f1 < 0) { + perror("open read.txt"); + return 1; + } + + int f2 = open("write.txt", O_CREAT | O_WRONLY | O_APPEND, 0755); + if (f2 < 0) { + perror("open write.txt"); + return 1; + } + + pid_t fpid = fork(); + if (fpid < 0) { + perror("fork"); + return 2; + } + + if (fpid == 0) { // child + char buff[3]; + for (int i = 0; i < 6; i++) { + read(f1, buff, 3); + write(f2, buff, 3); + sleep(1); + } + } + else { + int status = -2; + while (status == -2) { + sleep(2); + write(f2, "abc", 3); + waitpid(fpid, &status, WNOHANG); + } + } +} |
