Summary Files Commits Branches @commit @diff @stats
path: root / Year 3 / System programming / Practicum4 / ex4.c
diff options
context:
space:
mode:
Commit65bdc35e6f82ba0fa0259166005263a1fc9795c9 (patch)
Author
 Syndamia <kamen@syndamia.com>
2023-10-25 11:02:02 +0300
Committer
 Syndamia <kamen@syndamia.com>
2023-10-25 11:02:02 +0300
Filese6a47557ac218cff5803b48dd172867955248f75 /Year 3/System programming/Practicum4/ex4.c
uni-projects-65bdc35e6f82ba0fa0259166005263a1fc9795c9.tar
uni-projects-65bdc35e6f82ba0fa0259166005263a1fc9795c9.tar.gz
uni-projects-65bdc35e6f82ba0fa0259166005263a1fc9795c9.zip
Parent497f44a6c31b3976428e62db1f62c76be754f024 (diff)
[SP/P4] Solved all exercises
1 files changed, 22 insertions, 0 deletions
-rw-r--r--Year 3/System programming/Practicum4/ex4.c22
diff --git a/Year 3/System programming/Practicum4/ex4.c b/Year 3/System programming/Practicum4/ex4.c
new file mode 100644
index 0000000..3492784
--- /dev/null
+++ b/Year 3/System programming/Practicum4/ex4.c
@@ -0,0 +1,22 @@
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <stdio.h>
+
+int main(int argc, char *argv[]) {
+ int f1 = fork();
+ int f2 = fork();
+ if (f1 == 0) {
+ execlp(argv[1], argv[1], (char*)NULL);
+ }
+ else if (f2 == 0) {
+ execlp(argv[2], argv[2], (char*)NULL);
+ }
+ else {
+ int firstStatus, secondStatus;
+ int firstEnded = wait(&firstStatus);
+ int secondEnded = wait(&secondStatus);
+ printf("%s %d\n", argv[1 + (firstEnded != f1)], firstStatus);
+ printf("%s %d\n", argv[1 + (secondEnded != f1)], secondStatus);
+ }
+}