1#include <sys.h>23#include <errno.h>4#include <stdlib.h>56#include "../../syscall.h"78#define SHELL "/bin/sh"910#undef system1112int13system(const char *cmd)14{15 int st;16 pid_t pid;1718 if (!cmd)19 return _access(SHELL, X_OK);2021 switch ((pid = _fork())) {22 case -1:23 return -1;24 case 0:25 _execve(SHELL, (const char*[]) {"sh", "-c", cmd, NULL}, _environ);26 _exit(127);27 default:28 while (_waitpid(pid, &st, 0) < 0 && errno == EINTR)29 ;30 return st;31 }32}