[lldb-dev] Process spawning and shutdown
gclayton at apple.com
Mon Sep 22 11:34:41 PDT 2014
> On Sep 22, 2014, at 11:30 AM, Zachary Turner <zturner at google.com> wrote:
> The only way to wait for a process to exit is calling WaitForSingleObject() with the handle. You can specify a timeout to that function, and INFINITE is one possible value. However, it seems like the primary use case for LLDB waiting for a process to exit is to fire off the exit callback asynchronously. In that case Windows, like other platforms, will probably need to create a background thread, then WaitForSingleObject() on the background thread, then fire the callback after it returns.
> What I was thinking is have the HostProcess provide a method called BlockUntilExit() which can be used anywhere (even from the main thread) should the caller desire it, but when launching a process we would create a thread for on each platform that just calls this method on the HostProcess, then issues the callback. This would unify alot of code currently spread across the different Host.[cpp/mm] files.
> One thing that still eludes me though, is that when processes are launched using Applescript, no monitoring thread is created, and it looks at least like the callback is never invoked on these processes. Is this by design, a bug, or am I misreading the code?
It is by design. AppleScript is used to launch a process in a separate terminal window (allowing you to debug a "vi" or "emacs" style program that wants to take over the terminal and use all sorts of fancy terminal settings). The shell it runs in will reap the process and also give you a prompt back in the terminal so you can check the return value from there using the $? shell builtin variable.
More information about the lldb-dev