What is the simplest way to write to stdout in binary mode?

后端 未结 2 1975
温柔的废话
温柔的废话 2020-11-29 11:10

I\'ve been trying to figure out the best way to write binary data to stdout from a C program. It works fine on Linux, but I\'m having issues when I compile on Windows becaus

相关标签:
2条回答
  • 2020-11-29 11:45

    You can use setmode(fileno(stdout), O_BINARY)

    Wrap it in an ifdef if you want to keep it compatible with Linux.

    See also: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setmode?view=vs-2017

    0 讨论(0)
  • 2020-11-29 11:52

    You can do something like that (which is sort of cross platform):

    FILE *const in = fdopen(dup(fileno(stdin)), "rb");
    FILE *const out = fdopen(dup(fileno(stdout)), "wb");
    /* ... */
    fclose(in);
    fclose(out);
    

    Or you can use write() and read() system calls directly with fileno(stdin) and fileno(stdout). Those system calls operate on lower level and don't do any conversions. But they also don't have buffering that you get from FILE streams.

    0 讨论(0)
提交回复
热议问题