summaryrefslogtreecommitdiff
path: root/userland/libc/stdlib/system.c
blob: c35bee5ff43afd19bd745f72f16a831315d92799 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

int system(const char *command) {
  if (!command) {
    return NULL;
  }
  int pid = fork();
  if (0 == pid) {
    char *argv[2];
    argv[0] = "/sh";
    argv[1] = (char *)command;
    execv("/sh", argv);
  }
  // FIXME: Use waitpid
  int rc;
  (void)wait(&rc);
  return rc;
}