zoukankan      html  css  js  c++  java
  • 标准输入输出重定向

    转自:http://blog.csdn.net/diandian82/article/details/783777

     

    1. C:

    #include <stdio.h>

    #include <stdlib.h>

    void test_stdin()

    {

        char buf[128];

    freopen("1.txt", "r", stdin); //redirect stdin

        scanf("%s",buf);

        printf("%s ",buf);

        freopen("CON", "r", stdin); //recover(Windows)

    //freopen("/dev/console", "r", stdin); //recover(Linux)

    //freopen("/dev/pts/0", "r", stdin); //recover stdin(Linux : my putty client)

        scanf("%s",buf);

        printf("%s ",buf);

    }

    void test_stdout()

    {

        freopen("1.txt", "w", stdout); //redirect stdout

        printf("test");

        freopen("CON", "w", stdout); //recover stdout(Windows)

    //freopen("/dev/console", "w", stdout); //recover stdout(Linux)

    //freopen("/dev/pts/0", "w", stdout); //recover stdout(Linux : my putty client)

        printf("OK ");

    }

    int main()

    {

        printf("Test stdout : ");

        test_stdout();

        printf("Test stdin : ");

        test_stdin();

        return 0;

    }

     

    2.Python:

    #! /usr/bin/python

    import sys

    '''

      File : redirect.py

      Author : Mike

      E-Mail : Mike_Zhang@live.com

    '''

    print "Test stdout : "

    #redirect stdout

    tmp = sys.stdout

    fp = open("1.txt","w")

    sys.stdout = fp

    print 'Just a test'

    sys.stdout = tmp #recover stdout

    print 'test2'

    fp.close()

    print "Test stdin : "

    #redirect stdin

    tmp = sys.stdin

    fp = open("1.txt","r")

    sys.stdin = fp

    strTest = raw_input()

    print strTest

    sys.stdin = tmp # recover stdin

    strTest = raw_input()

    print strTest

    fp.close()

     

    3. C++:

    #include <iostream>

    #include <fstream>

    void main()

    {

        std::ofstream logFile("c://out.txt");

        std::streambuf *outbuf = std::cout.rdbuf(logFile.rdbuf());

        std::streambuf *errbuf = std::cerr.rdbuf(logFile.rdbuf());

        // do the actual work of the program;

        // GUI code and event loop would go here

        std::cout << "This would normally go to cout but goes to the log file/n";

        std::cerr << "This would normally go to cerr but goes to the log file /n";

        logFile << "This goes to the log file/n";

        // end of program body

        // restore the buffers

        std::cout.rdbuf(outbuf);

        std::cerr.rdbuf(errbuf);

        // It will output in your console

        std::cout << "This would normally go to cout but goes to the log file/n";

        std::cerr << "This would normally go to cerr but goes to the log file /n";

    }

  • 相关阅读:
    Cairngorm的command并不是一直存在,而是触发一次就创建一次command类的实例
    如何利用xml实现换行
    利用ViewStack实现页面的跳转
    让TextArea的垂直滚动条总是滚到对下面
    AS"文本显示和输入"探究
    fps
    简单的按键管理类,使ctrl+enter快捷键起作用
    mc的"animationComplete"事件需要冒泡吗?
    Javascript 利用键盘上的上下左右(回车)键模拟出tab 键的功能上下左右移动焦点
    DataTable操作中的性能问题(转载)
  • 原文地址:https://www.cnblogs.com/qinfengxiaoyue/p/4059592.html
Copyright © 2011-2022 走看看