char* gets(char*, int max);
uint strlen(const char*);
void* memset(void*, int, uint);
-void* malloc(uint);
+void* malloc(uint); // umalloc.c
void free(void*);
int atoi(const char*);
#include "stat.h"
#include "user.h"
+#define _NULL 0
+#define STDOUT_FD 1
+
+
int
main(int argc, char *argv[])
{
- // Student code goes here
+ // int i;
+
+ int pid = fork();
+ if (pid == 0) {
+ /* argv ends with a null ptr so no need for any malloc drama */
+ //char **child_argv = malloc((argc + 1) * sizeof(char *));
+
+
+ //for (i = 0; i < argc; ++i)
+ // child_argv[i] = argv[i]; /* point to same thing */
+
+ //child_argv[argc] = _NULL;
+
+ /* let's exec */
+ exec("echo", argv);
+ /* for old approach: argv memory should anyway be freed when process
+ * dies */
+ } else {
+ wait();
+ // printf(STDOUT_FD, "The child PID was: %d\n", pid);
+ }
- exit();
-}
\ No newline at end of file
+ exit();
+}