From eb922ab3b0cd126478c934273f6d109b32e9b374 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Thu, 25 Jul 2013 17:53:29 +0430 Subject: [PATCH] stdlib: add system() --- stdlib.c | 19 +++++++++++++++++++ stdlib.h | 1 + 2 files changed, 20 insertions(+) diff --git a/stdlib.c b/stdlib.c index 535c415..1413bd4 100644 --- a/stdlib.c +++ b/stdlib.c @@ -1,5 +1,7 @@ #include #include +#include +#include char **environ; @@ -27,3 +29,20 @@ char *getenv(char *name) return *p + len + 1; return NULL; } + +int system(char *cmd) +{ + char *argv[] = {"/bin/sh", "-c", cmd, NULL}; + pid_t pid; + int ret; + pid = fork(); + if (pid < 0) + return -1; + if (!pid) { + execv(argv[0], argv); + exit(1); + } + if (waitpid(pid, &ret, 0) != pid) + return -1; + return ret; +} diff --git a/stdlib.h b/stdlib.h index 7ec8d5c..cb88d05 100644 --- a/stdlib.h +++ b/stdlib.h @@ -15,6 +15,7 @@ void abort(void); char *getenv(char *name); void qsort(void *a, int n, int sz, int (*cmp)(void *, void *)); int mkstemp(char *t); +int system(char *cmd); void srand(unsigned int seed); int rand(void); -- 2.11.4.GIT