Merge pull request #3285 from nanoant/patch/lib-pure-osproc-spawn-vs-fork-simplify
osproc: Define and select spawn/fork same way
This commit is contained in:
commit
538fc0467b
1 changed files with 38 additions and 37 deletions
|
|
@ -614,9 +614,12 @@ elif not defined(useNimRtl):
|
|||
optionPoStdErrToStdOut: bool
|
||||
{.deprecated: [TStartProcessData: StartProcessData].}
|
||||
|
||||
when not defined(useFork):
|
||||
const useProcessAuxSpawn = declared(posix_spawn) and not defined(useFork) and
|
||||
not defined(useClone) and not defined(linux)
|
||||
when useProcessAuxSpawn:
|
||||
proc startProcessAuxSpawn(data: StartProcessData): Pid {.
|
||||
tags: [ExecIOEffect, ReadEnvEffect], gcsafe.}
|
||||
else:
|
||||
proc startProcessAuxFork(data: StartProcessData): Pid {.
|
||||
tags: [ExecIOEffect, ReadEnvEffect], gcsafe.}
|
||||
{.push stacktrace: off, profiler: off.}
|
||||
|
|
@ -674,9 +677,7 @@ elif not defined(useNimRtl):
|
|||
data.optionPoStdErrToStdOut = poStdErrToStdOut in options
|
||||
data.workingDir = workingDir
|
||||
|
||||
|
||||
when declared(posix_spawn) and not defined(useFork) and
|
||||
not defined(useClone) and not defined(linux):
|
||||
when useProcessAuxSpawn:
|
||||
pid = startProcessAuxSpawn(data)
|
||||
else:
|
||||
pid = startProcessAuxFork(data)
|
||||
|
|
@ -706,7 +707,7 @@ elif not defined(useNimRtl):
|
|||
discard close(pStdin[readIdx])
|
||||
discard close(pStdout[writeIdx])
|
||||
|
||||
when not defined(useFork):
|
||||
when useProcessAuxSpawn:
|
||||
proc startProcessAuxSpawn(data: StartProcessData): Pid =
|
||||
var attr: Tposix_spawnattr
|
||||
var fops: Tposix_spawn_file_actions
|
||||
|
|
@ -752,7 +753,7 @@ elif not defined(useNimRtl):
|
|||
discard posix_spawnattr_destroy(attr)
|
||||
chck res
|
||||
return pid
|
||||
|
||||
else:
|
||||
proc startProcessAuxFork(data: StartProcessData): Pid =
|
||||
if pipe(data.pErrorPipe) != 0:
|
||||
raiseOSError(osLastError())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue