1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:28:11 +00:00

LibC+Shell: Make system() actually work.

system() will now fork off a child process and execute the command via
/bin/sh -c. There are probably some things to fix here, but it's a start.
This commit is contained in:
Andreas Kling 2019-05-13 04:52:55 +02:00
parent 42cf09fdf1
commit 43604bf71a
2 changed files with 14 additions and 4 deletions

View file

@ -206,7 +206,16 @@ void srandom(unsigned seed)
int system(const char* command)
{
return execl("/bin/sh", "sh", "-c", command, nullptr);
auto child = fork();
if (!child) {
int rc = execl("/bin/sh", "sh", "-c", command, nullptr);
if (rc < 0)
perror("execl");
exit(0);
}
int wstatus;
waitpid(child, &wstatus, 0);
return WEXITSTATUS(wstatus);
}
char* mktemp(char* pattern)