On Wednesday, 27 January 2021 at 09:58:18 UTC, Arafel wrote:
On 27/1/21 10:35, Anthony wrote:

I'm trying to read the timed output of a pipeShell command but it only results in empty output.

Does anyone know why this is?


```
     auto p = pipeShell("time ls");

     foreach(str; p.stdout.byLine) {
         writefln("%s",str);
     }
```

I'm not sure why you get an empty output, you should get at least the `ls` output unless it's an empty directory (or one with only "dot" files).

However, in any case `time` returns the timing information through `stderr`, not `stdout`[1]. You can try [2,3] (untested):

```
auto p = pipeShell("time ls", Redirect.stderrToStdout);
```

Best,

A.

[1]: https://linux.die.net/man/1/time
[2]: https://dlang.org/library/std/process/pipe_shell.html
[3]: https://dlang.org/library/std/process/redirect.html

Thanks! I think this was the issue.
Turns out that pipeShell uses sh not bash so the "time" program isn't available.
When I printed stderr, it showed me the error.

Reply via email to