mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
LibC: Make system() behave according to POSIX
- system(nullptr) returns non-zero to indicate the presence of a shell - Failure to fork() returns -1 - Failure to exec() in the child returns 127
This commit is contained in:
parent
676af444ca
commit
b009f8522c
Notes:
sideshowbarker
2024-07-19 11:59:07 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/b009f8522cf
1 changed files with 9 additions and 3 deletions
|
@ -263,12 +263,18 @@ void srandom(unsigned seed)
|
|||
|
||||
int system(const char* command)
|
||||
{
|
||||
if (!command)
|
||||
return 1;
|
||||
|
||||
auto child = fork();
|
||||
if (child < 0)
|
||||
return -1;
|
||||
|
||||
if (!child) {
|
||||
int rc = execl("/bin/sh", "sh", "-c", command, nullptr);
|
||||
if (rc < 0)
|
||||
perror("execl");
|
||||
exit(0);
|
||||
ASSERT(rc < 0);
|
||||
perror("execl");
|
||||
exit(127);
|
||||
}
|
||||
int wstatus;
|
||||
waitpid(child, &wstatus, 0);
|
||||
|
|
Loading…
Reference in a new issue