asking about pipe line
hi, all
the information I get from the pipe line is the same to that I input
into the pipe
what is wrong with this piece of code?
how to change it?
thanks.
// tryPipe3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tryPipe3.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(),
0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
//char ReadBuf[100];
char * ReadBuf = new char [10000];
DWORD ReadNum;
HANDLE hRead; // =B9=DC=B5=C0=B6=C1=BE=E4=B1=FA
HANDLE hWrite; // =B9=DC=B5=C0=D0=B4=BE=E4=B1=FA
BOOL bRet = CreatePipe(&hRead, &hWrite, NULL, 0); // =B4=B4=BD=A8=C4=E4=
=C3=FB=B9=DC=B5=C0
if (bRet == TRUE)
printf("=B3=C9=B9=A6=B4=B4=BD=A8=C4=E4=C3=FB=B9=DC=B5=C0!\n");
else
printf("=B4=B4=BD=A8=C4=E4=C3=FB=B9=DC=B5=C0=CA=A7=B0=DC,=B4=ED=CE=F3=B4=
=FA =EB:%d\n", GetLastError());
// =B5=C3=B5=BD=B1=BE=BD=F8=B3=CC=B5=C4=B5=B1=C7=B0=B1=EA=D7=BC=CA=E4=B3=
=F6
HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);
HANDLE hTemp2 = GetStdHandle(STD_INPUT_HANDLE);
// =C9=E8=D6=C3=B1=EA=D7=BC=CA=E4=B3=F6=B5=BD=C4=E4=C3=FB=B9=DC=B5=C0
SetStdHandle(STD_OUTPUT_HANDLE, hWrite);
SetStdHandle(STD_INPUT_HANDLE,hRead);
GetStartupInfo(&si); // =BB=F1=C8=A1=B1=BE=BD=F8=B3=CC=B5=C4STARTUPINFO=
=BD=E1=B9=B9=D0=C5=CF=A2
bRet = CreateProcess(NULL, "sort/r", NULL, NULL, TRUE, NULL, NULL,
NULL, &si, &pi); // =B4=B4=BD=A8=D7=D3=BD=F8=B3=CC
SetStdHandle(STD_OUTPUT_HANDLE, hTemp); // =BB=D6=B8=B4=B1=BE=BD=F8=B3=CC=
=B5=C4=B1=EA=D7=BC=CA=E4=B3=F6
SetStdHandle(STD_INPUT_HANDLE,hTemp2);
if (bRet == TRUE) // =CA=E4=C8=EB=D0=C5=CF=A2
printf("=B3=C9=B9=A6=B4=B4=BD=A8=D7=D3=BD=F8=B3=CC!\n");
else
printf("=B4=B4=BD=A8=D7=D3=BD=F8=B3=CC=CA=A7=B0=DC,=B4=ED=CE=F3=B4=FA =
=EB:%d\n", GetLastError());
DWORD count1;
char str1[] = "c\na\nb\n";
WriteFile(hWrite,str1,strlen(str1),&count1,NULL);
cout<<"delta len"<<strlen(str1)-count1<<endl;
CloseHandle(hWrite); // =B9=D8=B1=D5=D0=B4=BE=E4=B1=FA
// =B6=C1=B9=DC=B5=C0=D6=B1=D6=C1=B9=DC=B5=C0=B9=D8=B1=D5
while (ReadFile(hRead, ReadBuf, 9999,&ReadNum, NULL))
{
ReadBuf[ReadNum] = '\0';
printf("=B4=D3=B9=DC=B5=C0[%s]=B6=C1=C8=A1%d=D7=D6=BD=DA=CA=FD=BE=DD\n"=
, ReadBuf, ReadNum);
}
if (GetLastError() == ERROR_BROKEN_PIPE) // =CA=E4=B3=F6=D0=C5=CF=A2=
printf("=B9=DC=B5=C0=B1=BB=D7=D3=BD=F8=B3=CC=B9=D8=B1=D5\n");
else
printf("=B6=C1=CA=FD=BE=DD=B4=ED=CE=F3,=B4=ED=CE=F3=B4=FA =EB:%d\n", =
GetLastError());
}
//return nRetCode;
return 0;
}