On 1/28/21 3:45 PM, Anthony wrote:

> void end(AccumulatorPipe acc) {
>      auto pids = acc.pids ~ P.spawnShell("cat", acc.stdout);
>
>      foreach (pid; pids) {
>          P.wait(pid);
>      }
> }
> ```
>
>
> So now I can do something like:
> ```
> run("find source -name '*.d'")
>          .pipe("entr ./make.d tests")
>          .end(),

Cool but there should be one improvement because I don't think end() is guaranteed to be executed in that code, which may leave zombie processes around. From 'man waitpid':

  "A child that terminates, but has not been waited for becomes a "zombie".

Which is relayed to std.process documentation as "to avoid child processes becoming "zombies"".

Ali

Reply via email to