Age | Commit message (Collapse) | Author |
|
One quick solution to the lack of tracking deep into the command line is
to note that the pattern of code emitted for an async is:
Xasync
|__ child (command)
|__ parent (continues)
The child creates a process group, as described before. If the child is
a simple command, we will now "exec" as it will exit immediately after
the command. This gives us the correct behavior, at least for simple
cases.
This also fixed pipes. However, if child has to be forked, i.e. can't be
immediately execed, then I don't think this process works...
|
|
Hit a bit of a stopping point. Specifically, the way XAsync runs
currently is by forking the execution context and having the child run
the async code while the parent runs the remainder. The problem with
this architecture is it doesn't interact well with job control. When we
fork, we create a new process group. Thus the Xasync fork becomes the
new leader.
In short, our traversal of the parse tree as to be less "preorder" and
more "in order", i.e. from the leaves up. The "left" command of the
pipeline should be the "leader" of the process group.
|
|
Slowly chipping away at a decent feature list.
Subshell commands are executed by @{ ... }.
|
|
|
|
|
|
|
|
|