On Thursday, 16 May 2019 at 15:21:48 UTC, Vladimir Panteleev
wrote:
On Thursday, 16 May 2019 at 14:53:14 UTC, Alex wrote:
I have some code that disables the console because some other
code puts junk on it that I don't want to see... then I enable
it.
One thing you could try is going one level lower, and using
dup() to save the stream to another fd, close() to close the
stdout one, and dup2() to restore the saved fd over the stdout
one.
Unfortunately D doesn't seem to have dup, dup2.
On 05/10/14 22:24, MarisaLovesUsAll via Digitalmars-d-learn wrote:
I sometimes got a useless messages in stdout from SDL_Image
library, and I want to temporary silence it. How do I do?
One way would be something like:
import std.stdio;
void writeOutput () {
static c = 1;
printf("%d\n", c++);
}
void main() {
writeOutput();
{
auto ex = PushFD!1("/dev/null".ptr);
writeOutput();
}
writeOutput();
}
struct PushFD(int fd) {
import core.sys.posix.fcntl, core.sys.posix.unistd;
int old;
this(const char* fn) { //
old = dup(fd);
auto nfd = open(fn, O_RDWR);
dup2(nfd, fd);
close(nfd);
}
~this() { dup2(old, fd); close(old); }
}
// In real code you'll want to check for errors from
dup/dup2/open/close.
artur
That code fails to compile on windows.