Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    aafb03b2
    Convert LLProcess implementation from platform-specific to using APR. · aafb03b2
    Nat Goodspeed authored
    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.
    aafb03b2
    History
    Convert LLProcess implementation from platform-specific to using APR.
    Nat Goodspeed authored
    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.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.