• windows 控制台命令输出 捕获


    #include <fcntl.h>
    #include <stdlib.h>
    #include <stdio.h>
    /* gcc defined unix */
    #ifdef unix
    #include <unistd.h>
    #endif
    #ifdef WIN32
    #include <io.h>
    #define pipe(X) _pipe(X,40,O_BINARY)
    #define fileno _fileno
    #define dup2 _dup2
    #define read _read

    #endif
    #include <assert.h>

    int main()
    {
         int fds[2];
         int res;
         char buf[256];
         int so;

        res = pipe(fds);
         assert(res == 0);

        so = fileno(stdout);
         //close stdout handle and make the writable part of fds the new stdout.
         res = dup2(fds[1], so);
         assert(res != -1);

        //printf("Hi theren3333333");
         system("dir");
         fflush(stdout);
         //reading should happen in a different thread

        res = read(fds[0], buf, sizeof(buf) - 1);
         assert(res >= 0 && res < sizeof(buf));
         buf[res] = 0;
         fprintf(stderr, "buf=>%s   --->n", buf);
         return 0;
    }

    PS:会笑的人,运气通常都会比别人好。
  • 相关阅读:
    java8
    java8
    java8
    java8
    java8
    java8
    java8
    java8
    GUC-13 生产者和消费者案例-旧
    GUC-14 ForkJoin
  • 原文地址:https://www.cnblogs.com/thinkinc999/p/13261747.html
Copyright © 2020-2023  润新知