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