diff options
[SP/P5] Added solutions to some exercises from today
1 files changed, 30 insertions, 0 deletions
| -rw-r--r-- | Year 3/System programming/Practicum5/ex6.c | 30 |
diff --git a/Year 3/System programming/Practicum5/ex6.c b/Year 3/System programming/Practicum5/ex6.c new file mode 100644 index 0000000..86e206c --- /dev/null +++ b/Year 3/System programming/Practicum5/ex6.c @@ -0,0 +1,30 @@ +#include <fcntl.h> +#include <unistd.h> +#include <sys/wait.h> +#include <stdio.h> + +int main(int argc, char *argv[]) { + pid_t f = fork(); + if (f < 0) { + perror("fork"); + return 1; + } + + if (f == 0) { + char *commargs[argc]; + commargs[0] = argv[1]; + for (int i = 0; i < argc - 2; i++) + commargs[i+1] = argv[i+1]; + commargs[argc - 1] = NULL; + + int w = open(argv[argc-1], O_WRONLY | O_CREAT, 0755); + dup2(w, 1); + close(w); + execvp(*commargs, commargs + 1); + } + else { + int status = -2; + wait(&status); + printf("Exit: %d\n", status); + } +} |
