BUG: Do not close stdout/stderr pipes in parent if they are shared.
This commit is contained in:
parent
3f224b7558
commit
8567e7d0bc
@ -689,7 +689,10 @@ void kwsysProcess_Execute(kwsysProcess* cp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* The parent process does not need the output pipe write ends. */
|
/* The parent process does not need the output pipe write ends. */
|
||||||
kwsysProcessCleanupDescriptor(&si.StdErr);
|
if(si.StdErr != 2)
|
||||||
|
{
|
||||||
|
kwsysProcessCleanupDescriptor(&si.StdErr);
|
||||||
|
}
|
||||||
kwsysProcessCleanupDescriptor(&si.TermPipe);
|
kwsysProcessCleanupDescriptor(&si.TermPipe);
|
||||||
|
|
||||||
/* Restore the working directory. */
|
/* Restore the working directory. */
|
||||||
@ -1395,7 +1398,10 @@ static int kwsysProcessCreate(kwsysProcess* cp, int prIndex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* The parent process does not need the output pipe write ends. */
|
/* The parent process does not need the output pipe write ends. */
|
||||||
kwsysProcessCleanupDescriptor(&si->StdOut);
|
if(si->StdOut != 1)
|
||||||
|
{
|
||||||
|
kwsysProcessCleanupDescriptor(&si->StdOut);
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1160,7 +1160,7 @@ void kwsysProcess_Execute(kwsysProcess* cp)
|
|||||||
{
|
{
|
||||||
kwsysProcessCleanupHandle(&si.StartupInfo.hStdOutput);
|
kwsysProcessCleanupHandle(&si.StartupInfo.hStdOutput);
|
||||||
}
|
}
|
||||||
if(si.StartupInfo.hStdOutput != GetStdHandle(STD_ERROR_HANDLE))
|
if(si.StartupInfo.hStdError != GetStdHandle(STD_ERROR_HANDLE))
|
||||||
{
|
{
|
||||||
kwsysProcessCleanupHandle(&si.StartupInfo.hStdError);
|
kwsysProcessCleanupHandle(&si.StartupInfo.hStdError);
|
||||||
}
|
}
|
||||||
@ -1176,7 +1176,10 @@ void kwsysProcess_Execute(kwsysProcess* cp)
|
|||||||
|
|
||||||
/* Close the inherited handles to the stderr pipe shared by all
|
/* Close the inherited handles to the stderr pipe shared by all
|
||||||
processes in the pipeline. */
|
processes in the pipeline. */
|
||||||
kwsysProcessCleanupHandle(&si.StartupInfo.hStdError);
|
if(si.StartupInfo.hStdError != GetStdHandle(STD_ERROR_HANDLE))
|
||||||
|
{
|
||||||
|
kwsysProcessCleanupHandle(&si.StartupInfo.hStdError);
|
||||||
|
}
|
||||||
|
|
||||||
/* Restore the working directory. */
|
/* Restore the working directory. */
|
||||||
if(cp->RealWorkingDirectory)
|
if(cp->RealWorkingDirectory)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user