Fix process creation on Linux
Forked child process did not exit properly, sometimes causing scripting compilation to get stuck and never finish.
This commit is contained in:
@@ -2802,6 +2802,7 @@ int32 LinuxProcess(const StringView& cmdLine, const StringView& workingDir, cons
|
|||||||
{
|
{
|
||||||
close(fildes[0]); // close the reading end of the pipe
|
close(fildes[0]); // close the reading end of the pipe
|
||||||
dup2(fildes[1], STDOUT_FILENO); // redirect stdout to pipe
|
dup2(fildes[1], STDOUT_FILENO); // redirect stdout to pipe
|
||||||
|
close(fildes[1]);
|
||||||
dup2(STDOUT_FILENO, STDERR_FILENO); // redirect stderr to stdout
|
dup2(STDOUT_FILENO, STDERR_FILENO); // redirect stderr to stdout
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2810,6 +2811,8 @@ int32 LinuxProcess(const StringView& cmdLine, const StringView& workingDir, cons
|
|||||||
{
|
{
|
||||||
LOG(Warning, " failed, errno={}", errno);
|
LOG(Warning, " failed, errno={}", errno);
|
||||||
}
|
}
|
||||||
|
fflush(stdout);
|
||||||
|
_exit(1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2822,7 +2825,7 @@ int32 LinuxProcess(const StringView& cmdLine, const StringView& workingDir, cons
|
|||||||
{
|
{
|
||||||
char lineBuffer[1024];
|
char lineBuffer[1024];
|
||||||
close(fildes[1]); // close the writing end of the pipe
|
close(fildes[1]); // close the writing end of the pipe
|
||||||
FILE *stdPipe = fdopen(fildes[0], "r");
|
FILE* stdPipe = fdopen(fildes[0], "r");
|
||||||
while (fgets(lineBuffer, sizeof(lineBuffer), stdPipe) != NULL)
|
while (fgets(lineBuffer, sizeof(lineBuffer), stdPipe) != NULL)
|
||||||
{
|
{
|
||||||
char *p = lineBuffer + strlen(lineBuffer)-1;
|
char *p = lineBuffer + strlen(lineBuffer)-1;
|
||||||
@@ -2857,6 +2860,7 @@ int32 LinuxProcess(const StringView& cmdLine, const StringView& workingDir, cons
|
|||||||
returnCode = EPIPE;
|
returnCode = EPIPE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
close(fildes[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user