1. 程式人生 > >標準輸入、輸出、錯誤裝置

標準輸入、輸出、錯誤裝置

     
/*
 * FileName: Stand_Windows_Device.cpp 
 * Author:   JarvisChu
 * Date:     2012-11-07
 */

#include <stdio.h>
#include <windows.h>

#define BUFF_SIZE 256

int main(int argc, char* argv[])
{
	DWORD nRead;
	DWORD nWrite;
	TCHAR buf[BUFF_SIZE];
     
	HANDLE hStd_Input = GetStdHandle(STD_INPUT_HANDLE);   //Get the standard input device
	HANDLE hStd_Output = GetStdHandle(STD_OUTPUT_HANDLE); //Get the standard input device
	HANDLE hStd_Error = GetStdHandle(STD_ERROR_HANDLE);   //Get the standard error device

	//read from stdinput, and write to stdoutput
	while(ReadFile(hStd_Input,buf,BUFF_SIZE,&nRead,NULL) && nRead>0)
	{
		if(!WriteFile(hStd_Output,buf,nRead,&nWrite,NULL) || nRead != nWrite)
		{

			WriteFile(hStd_Error,"WriteFile Error",sizeof(TCHAR)*15,NULL,NULL);
		}
		break; //For the purpose of testing,just read one line
	}


        //--------------------------------------------------------------------------------------------
        //Standard Input Redirection

	HANDLE hFileIn = CreateFile("in.txt",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);
	
	//the two statements below complete the redirection
	SetStdHandle(STD_INPUT_HANDLE,hFileIn);               //set the hFileIn as the standard input device
	HANDLE newStd_Input = GetStdHandle(STD_INPUT_HANDLE); //Get the standard input device,now is hFileIn

	while(ReadFile(newStd_Input,buf,BUFF_SIZE,&nRead,NULL) && nRead>0)
	{
		WriteFile(hStd_Output,buf,nRead,&nWrite,NULL);
	}
	
	SetStdHandle(STD_INPUT_HANDLE,hStd_Input);  //Reset the Standard Input Device to default


	//--------------------------------------------------------------------------------------------
        //Standard Output Redirection

	HANDLE hFileOut = CreateFile("out.txt",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);
	
	//the two statements below complete the redirection
	SetStdHandle(STD_OUTPUT_HANDLE,hFileOut);               //set the hFileIn as the standard input device
	HANDLE newStd_Output = GetStdHandle(STD_OUTPUT_HANDLE); //Get the standard output device,now is hFileout
	
	while(ReadFile(hStd_Input,buf,BUFF_SIZE,&nRead,NULL) && nRead>0)
	{
		WriteFile(newStd_Output,buf,nRead,&nWrite,NULL);
		break; //For the purpose of testing,just read one line
	} 

        //Reset the Standard IO Device to default
	SetStdHandle(STD_OUTPUT_HANDLE,hStd_Output);


	//--------------------------------------------------------------------------------------------
        //Close Handles
	CloseHandle(hFileIn);
	CloseHandle(hFileOut);
	CloseHandle(hStd_Input);
	CloseHandle(hStd_Input);
	CloseHandle(newStd_Input);
	CloseHandle(newStd_Output);

	return 0;
}
     其中in.txt中的內容如下     

相關推薦

標準輸入輸出錯誤裝置

     /* * FileName: Stand_Windows_Device.cpp * Author: JarvisChu * Date: 2012-11-07 */ #include <stdio.h> #include <windows.h> #de

linux學習第一周;標準輸入輸出錯誤重定向與管道

例子 OS clas 管道 text 默認 post 錯誤 gpo 標準輸入 標準輸出 標準錯誤 重定向: < #標準輸入重定向,默認為鍵盤輸入,利用<可以將文件代替鍵盤輸入 > #標準輸出重定向(會覆蓋1.text裏面的內容);例子:ls > /d

linux隨筆(一) | 標準輸入輸出錯誤

在工作開始初期,我曾經為了“ >/dev/null  2>&1 ”這一種糾結。今日又看到這種命令字尾,感觸良多。如果你也有這種困惑,不妨來看看這篇小文章。 在lunix中,有三種標準流:標準輸入流、標準輸出流、標準錯誤流。為了區分這三種流,linux分別

Linux:標準輸入輸出錯誤

1、檔案描述符檔案檔案描述符 輸入檔案0輸出檔案1錯誤輸出檔案22、將標準輸出和錯誤輸出重定向到同一個檔案:2>&1[email protected]:~/mybash$ cat test.sh #/usr/bin/bashname=kevinecho $nameipconfig[em

Linux重定向及標準輸入輸出錯誤相關

 通常情況,每個 Unix 程式在啟動時都會開啟三個流,一個用於輸入,一個用於輸出,一個用於列印診斷或錯誤訊息。它們分別被做:標準輸入,標準輸出,標準錯誤。 標準輸入是程式可以讀取其輸入的位置

2.8 補充:標準輸入輸出錯誤輸出

輸入輸出重定向 輸出 錯誤 一個 是把 效果 null 例如 實現 Linux Shell 環境中支持輸入輸出重定向,用符號"<"和">"來表示。0、1和2分別表示標準輸入、標準輸出和標準錯誤信息輸出,可以用來指定需要重定向的標準輸入或輸出,比如 2>a.

標準輸入輸出錯誤輸出

 當我們在s h e l l中執行命令的時候,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶, s h e l l同時也給出了相應的檔名。  下面就是這些檔案描述符及它們通常所對應的檔名: 檔案檔案描述符  輸入檔案—標準輸入std

Linux shell的標準輸入輸出錯誤

1.檔案描述符 在linux shell執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。由於檔案描述符不容易記憶,shell同時也給出了相應的檔名: 檔案 檔案描述符 輸入檔案—標準輸入 0(預設是鍵盤,為0時是檔案或者其他命令的輸出) 輸出檔

python3的輸入輸出變量數據類型知識內容

code 取整 space nta 區別 format 方式 http 假設 一、輸入、輸出、打印數據 1、輸入input 一個程序要能實現人機交互功能,必須要能夠接受從鍵盤上輸入的數據。在python中,接收由鍵盤輸入的數據的函數是 input(); sex = inp

連結串列實現學生資訊表(含輸入輸出計算表長查詢插入刪除等功能)

連結串列實現學生資訊表(含輸入、輸出、計算表長、查詢、插入、刪除等功能) #include <stdio.h> #include <stdlib.h> void menu() { printf("make your choice \n"); pr

Java的輸入輸出if...else if...else判斷Java中列印陣列Java中陣列排序檢視函式方法的原始碼命令列引數

Java的輸入和輸出: 輸入: import java.util.Scanner Scanner s = new Scanner(System.in); //通過new Scanner(System.in)建立一個Scanner物件,控制檯會一直等待輸入,直到敲回車鍵

實驗一 數字影象的輸入輸出顯示直方圖統計

1.編寫對灰度影象進行直方圖統計的程式,並將結果顯示在螢幕上。 2.顯示原影象的直方圖和經過均衡化處理過的影象直方圖。 I = imread('lena512.bmp');   figure(1);   subplot(221),imshow(I);title('原始影象

項管(八)——十大管理過程的輸入輸出工具

一、專案整體管理:1、制定專案章程:輸入:專案工作說明書、商業論證、協議、事業環境因素、組織過程資產;工具:專家判斷、引導技術;輸出:專案章程;2、制定專案管理計劃:輸入:專案章程、其它過程的輸出、事業環境因素、組織過程資產工具:專家判斷、引導技術;輸出:專案管理計劃;3、指

C語言註釋風格(函式功能輸入輸出返回)

C語言程式設計規範-註釋規則: 1:一般情況下,源程式有效註釋量必須在20%以上。     說明:註釋的原則是有助於對程式的閱讀理解,在該加的地方都加了,註釋不宜太多也不能太少,註釋語言必須準確、易懂、簡潔。 2:說明性檔案(如標頭檔案.h檔案、.inc檔案、.def檔案、

2. Python中的基本輸入輸出格式化

個數 ota 函數 關註 類型 目前 位置 format tla 本文利用的是Python 3.x版本,建議學習3.x版本 Python中的基本輸入、輸出、格式化 1. 輸入 使用input([prompt])讀取一行,將其轉換為string類型並返回,input的參數

數據的標準輸入輸出

輸入一行字符串 scanner util 步驟 args 構造 存在 標準輸出 一個 《一》輸入數據 Scsnner是一個用於掃描輸入文本的實用程序,存在於java.util包中。 使用該類的步驟: 1.在程序的開頭添加一行導入包語句“import java.util,

轉換流和標準輸入輸出

轉換流提供了字元流和位元組流之間的轉換 InputStreamReader和OutputStreamWriter 位元組流中的資料都是字元時,轉成字元流操作更高效 /* 轉換流:inputStreamReader OutputStreamWriter 編碼:字串 --->

Spark Streaming(二十七)DStream的轉換輸出快取持久化檢查點

定義 所謂DStream的轉換其實就是對間隔時間內DStream資料流的RDD進行轉換操作並返回去一個新的DStream。 DStream轉換 其實DStream轉換語法跟RDD的轉換語法非常類似,但DStream有它自己的一些特殊的語法,如updateStat

process.stdin的end事件如何觸發?---關於nodejs底層的標準輸入輸出的坑

最近想用js來寫一點簡單的演算法題,node是使用process.stdin和process.stdout來實現標準輸入和輸出的,我的目標是實現*迴圈輸入*,遇到沒有輸入時,輸入結束。聽起來好像很簡單,那麼接下來我們就來試試。 官方文件 首先我們

perl-標準輸入輸出

-1----------------------------------------------------------------------------------------------------- 標準輸入與輸出: <STDIN>