Summary Files Commits Branches @commit @diff @stats
path: root / Year 3 / System programming / Practice05 / ex2.c
diff options
context:
space:
mode:
Commit3c791c6c357115d4abf71c318c9e7cd7571ea658 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-12-02 21:25:46 +0200
Committer
 Syndamia <kamen@syndamia.com>
2023-12-02 21:25:46 +0200
Files10705fa10c017e7c1c66d1c8feaca92758acefd0 /Year 3/System programming/Practice05/ex2.c
uni-projects-3c791c6c357115d4abf71c318c9e7cd7571ea658.tar
uni-projects-3c791c6c357115d4abf71c318c9e7cd7571ea658.tar.gz
uni-projects-3c791c6c357115d4abf71c318c9e7cd7571ea658.zip
Parent952bee4ac4e4a97d30fc1d681ff0a9e5168fb9c8 (diff)
[SP/P05] Solved exercises
1 files changed, 34 insertions, 0 deletions
-rw-r--r--Year 3/System programming/Practice05/ex2.c34
diff --git a/Year 3/System programming/Practice05/ex2.c b/Year 3/System programming/Practice05/ex2.c
new file mode 100644
index 0000000..85ce0dd
--- /dev/null
+++ b/Year 3/System programming/Practice05/ex2.c
@@ -0,0 +1,34 @@
+#include <unistd.h> // fork, write, close, sleep
+#include <fcntl.h> // open
+#include <stdio.h> // perror
+
+int main(int argc, char* argv[]) {
+ int file = open("test.txt", O_WRONLY);
+ if (file < 0) {
+ perror("open");
+ return 1;
+ }
+ pid_t f = fork();
+
+ if (f == 0) { // in child
+ char buf = 'c';
+ for (int i = 0; i < 5; i++) {
+ sleep(2);
+ if(write(file, &buf, 1) < 0) {
+ perror("write");
+ return 2;
+ }
+ }
+ }
+ else {
+ char buf = 'p';
+ for (int i = 0; i < 5; i++) {
+ if(write(file, &buf, 1) < 0) {
+ perror("write");
+ return 3;
+ }
+ sleep(1);
+ }
+ }
+ close(file);
+}