From 65966ded0cc15c5966c6568cf0ff2f2bbe1fc29a Mon Sep 17 00:00:00 2001 From: Stefan Zabka Date: Sun, 24 May 2020 12:09:46 +0200 Subject: Big remodelling --- 02_exercise/beispiele/dup/Makefile | 18 -------------- 02_exercise/beispiele/dup/dup.c | 51 -------------------------------------- 2 files changed, 69 deletions(-) delete mode 100644 02_exercise/beispiele/dup/Makefile delete mode 100644 02_exercise/beispiele/dup/dup.c (limited to '02_exercise/beispiele/dup') diff --git a/02_exercise/beispiele/dup/Makefile b/02_exercise/beispiele/dup/Makefile deleted file mode 100644 index 0f73ac4..0000000 --- a/02_exercise/beispiele/dup/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/make -.SUFFIXES: - -CFLAGS = -c -Os -Wall -Werror - -%.o: %.c - $(CC) $(CFLAGS) $^ -o $@ - -%: %.o - $(CC) -o $@ $^ - -all: dup - -run: all - ./dup - -clean: - $(RM) $(RMFILES) dup diff --git a/02_exercise/beispiele/dup/dup.c b/02_exercise/beispiele/dup/dup.c deleted file mode 100644 index ea3c5a6..0000000 --- a/02_exercise/beispiele/dup/dup.c +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include -#include - -/* https://www.youtube.com/watch?v=gaXigSu72A4 */ -static inline void die(const char* msg) { - perror(msg); - exit(EXIT_FAILURE); -} - -int main(int argc, char **argv) { - int pdes[2]; - pid_t child; - - if (pipe(pdes) < 0) - die("pipe()"); - - if ((child = fork()) < 0) - die("fork()"); - - if (child == 0) { - /* child process */ - close(pdes[0]); - close(1); /* close stdout */ - - if (dup(pdes[1]) < 0) - die("dup()"); - - /* now stdout and pdes[1] are equivalent (dup returns lowest free descriptor) */ - if (execlp("cat", "cat", "/etc/passwd", NULL) < 0) - die("execlp()"); - - exit(EXIT_SUCCESS); - } - else { - /* parent process */ - close(0); /* close stdin */ - close(pdes[1]); - - if (dup(pdes[0]) < 0) - die("dup()"); - - /* now stdin and pdes[0] are equivalent (dup returns lowest free descriptor) */ - if (execlp("wc", "wc", "-l", NULL) < 0) - die("execlp()"); - - exit(EXIT_SUCCESS); - } - - return 0; -} -- cgit v1.2.3-54-g00ecf