Atomic pipes
[akaros.git] / tests / spawn.c
index 413a577..f2a46e9 100644 (file)
@@ -1,9 +1,15 @@
 
-#include <rstdio.h>
+#include <stdio.h>
 #include <parlib.h>
+#include <unistd.h>
 
-int main(int argc, char** argv)
+int main(int argc, char **argv, char **envp)
 {
+       char *p_argv[] = {0, 0, 0};
+       char *p_envp[] = {"LD_LIBRARY_PATH=/lib", 0};
+       #define FILENAME "/bin/hello"
+       //#define FILENAME "/bin/hello-sym"
+       char filename[] = FILENAME;
        #if 0
        /* try some bad combos */
        int pid = sys_proc_create("garbagexxx");
@@ -29,10 +35,23 @@ int main(int argc, char** argv)
        }
        #endif
        printf("U: attempting to create and run hello\n");
-       child_pid[0] = sys_proc_create("/bin/hello");
-       sys_proc_run(child_pid[0]);
+       p_argv[0] = filename;
+       printf("SPAWN, I'm pid %d, filename %s\n", getpid(), filename);
+       child_pid[0] = sys_proc_create(FILENAME, strlen(FILENAME), p_argv, p_envp);
+       if (child_pid[0] <= 0)
+               printf("Failed to create the child\n");
+       else
+               if (sys_proc_run(child_pid[0]) < 0)
+                       printf("Failed to run the child (pid %d)\n", child_pid[0]);
+
+       #if 0
        printf("U: attempting to create and run another hello\n");
-       child_pid[1] = sys_proc_create("/bin/hello");
-       sys_proc_run(child_pid[1]);
+       child_pid[1] = sys_proc_create(FILENAME, strlen(FILENAME), 0, 0);
+       if (child_pid[1] <= 0)
+               perror("");
+       else
+               if (sys_proc_run(child_pid[1]) < 0)
+                       perror("");
+       #endif
        return 0;
 }