fork.c
changeset 56 966ad681f25d
child 77 49e0babccb23
new file mode 100644
--- /dev/null
+++ b/fork.c
@@ -0,0 +1,46 @@
+/**
+ * test/demos/fork.c
+ * Copyright (C) Markus Broeker
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/wait.h>
+#include <errno.h>
+
+int fork_proc (char **argv, char **argp)
+{
+    int pid;
+    char *cmd = argv[0];
+
+    pid = fork ();
+    switch (pid) {
+    case 0:
+        printf ("Starting new Process\n");
+        execve (cmd, argv, argp);
+    case -1:
+        perror ("FORK");
+        return errno;
+    default:
+        printf ("Pid started as %d\n", pid);
+        wait (&pid);
+        printf ("Exit-Status = %d\n", pid);
+        return pid;
+    }
+}
+
+int main (int argc, char **argv)
+{
+    char *args[] = {
+        "/bin/ls",
+        "-al",
+        NULL
+    };
+
+    if (fork_proc (args, NULL) == 0) {
+        printf ("It just works :P\n");
+    }
+
+    return EXIT_SUCCESS;
+}