diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2012-02-07 10:53:23 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2012-02-07 10:53:23 -0500 |
commit | aafb03b29f5166e8978931ad8b717be32d942836 (patch) | |
tree | db1f294e7327a876ddb91ffb3ac37423f987dd83 /indra/llcommon/llrand.cpp | |
parent | d99acd56cdc41d72a073a4419e3e51c356e675bb (diff) |
Convert LLProcess implementation from platform-specific to using APR.
Include logic to engage Linden apr_procattr_autokill_set() extension: on
Windows, magic CreateProcess() flag must be pushed down into apr_proc_create()
level. When using an APR package without that extension, present
implementation should lock (e.g.) SLVoice.exe lifespan to viewer's on Windows
XP but probably won't on Windows 7: need magic flag on CreateProcess().
Using APR child-termination callback requires us to define state (e.g.
LLProcess::RUNNING). Take the opportunity to present Status, capturing state
and (if terminated) rc or signal number; but since most of the time all caller
really wants is to log the outcome, also present status string, encapsulating
logic to examine state and describe exited-with-rc vs. killed-by-signal.
New Status logic may report clearer results in the case of a Windows child
process killed by exception.
Clarify that static LLProcess::isRunning(handle) overload is only for use when
the original LLProcess object has been destroyed: really only for unit tests.
We necessarily retain our original platform-specific implementations for just
that one method. (Nonstatic isRunning() no longer calls static method.)
Clarify log output from llprocess_test.cpp in a couple places.
Diffstat (limited to 'indra/llcommon/llrand.cpp')
0 files changed, 0 insertions, 0 deletions