diff --git a/libc/src/stdlib.cpp b/libc/src/stdlib.cpp index 290f66da..926a4582 100644 --- a/libc/src/stdlib.cpp +++ b/libc/src/stdlib.cpp @@ -184,11 +184,14 @@ extern "C" { if (!cmd) { - // FIXME: Check if there is a shell available in the system. - errno = ENOTSUP; - return -1; + struct stat st; + if (stat("/bin/sh", &st) < 0) return 0; + return S_ISREG(st.st_mode); } + // FIXME: During the execution of system(), SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored, in + // the process that calls system(). + pid_t child = fork(); if (child == 0) {