diff --git a/fork.c b/fork.c new file mode 100644 --- /dev/null +++ b/fork.c @@ -0,0 +1,46 @@ +/** + * test/demos/fork.c + * Copyright (C) Markus Broeker + */ + +#include +#include +#include +#include +#include + +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; +}