On 06/26/2016 05:37 PM, Smoke Adams wrote:
system("cls") works but executeShell doesn't. system is depreciated.

Unsolicited spelling correction: no 'i' in "deprecated".

What's going on? The docs say that it creates a new process. I simply
want to clear the console!

`system` directly prints its output, `executeShell` returns it in a tuple with the status code. Maybe cls works by printing some specific clear code. If so, you have to print the output of the command.

This works with `clear` on Linux which seems to behave similarly to Windows' cls:

----
void main()
{
    import std.stdio: write, writeln;
    import std.process: executeShell;
    import std.exception: enforce;
    writeln("A");
    auto r = executeShell("clear");
    enforce(r.status == 0);
    write(r.output);
    writeln("B");
}
----

`wait(spawnShell(...))` is the other suggestion from `system`'s deprecation message. It works for `clear`, too:

----
void main()
{
    import std.stdio: writeln;
    import std.process: spawnShell, wait;
    writeln("A");
    wait(spawnShell("clear"));
    writeln("B");
}
----

Reply via email to