轉自: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\n",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\n",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\n");
}
int main()
{
printf("Test stdout : \n");
test_stdout();
printf("Test stdin : \n");
test_stdin();
return 0;
}
2.Python:
#! /usr/bin/python
import sys
'''
File : redirect.py
Author : Mike
E-Mail : [email protected]
'''
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";
}
將ls –l的輸出結果保存到/root/my.out這個文件中
將/root/my.out作為cat的輸入,讀出/root/my.out的內容
輸出追加重定向就是將輸出追加到一個已存在的文件中,這個命令的作用是找出文件系統中含有bin字符的文件,但是bin前面必須還有一個任意字符,即找出含有四個字符,但是結尾為bin的文件,然後將結果保存到my1.out這個文件中
重定向就是通過各種的方法將各種網絡請求重新定個方向轉到其它位置
輸入重定向:是指不使用系統提供的標准輸入端口,而進行重新的指定。符號<.
輸出重定向>或者>>
可以參考一下內容zh.wikipedia.org/...90%91_(%E8%AE%A1%E7%AE%97%E6%9C%BA)
ls > filename
cat filename > new_filename
……