Embed
Email

pipes

Document Sample

Categories
Tags
Stats
views:
0
posted:
11/17/2011
language:
English
pages:
4
Windows Anonymous Pipes



Program Name: PipeParent.c



#include

#include

#include



#define BUFFER_SIZE 25



int main(VOID)

{

HANDLE ReadHandle, WriteHandle;

STARTUPINFO si;

PROCESS_INFORMATION pi;

char message[BUFFER_SIZE] = "Greetings";

DWORD written;



/* set up security attributes so that pipe handles are inherited */

SECURITY_ATTRIBUTES sa = {sizeof(SECURITY_ATTRIBUTES), NULL,TRUE};



/* allocate memory */

ZeroMemory(&pi, sizeof(pi));



/* create the pipe */

if ( !CreatePipe(&ReadHandle, &WriteHandle, &sa, 0)) {

fprintf(stderr,"Create Pipe Failed\n");

return 1;

}



/* establish the START_INFO structure for the child process */

GetStartupInfo(&si);

si.hStdError = GetStdHandle(STD_ERROR_HANDLE);

si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);



/* redirect the standard input to the read end of the pipe */

si.hStdInput = ReadHandle;

si.dwFlags = STARTF_USESTDHANDLES;



/* we do not want the child to inherit the write end of the pipe */

SetHandleInformation( WriteHandle, HANDLE_FLAG_INHERIT, 0);



/* create the child process */

if (!CreateProcess(NULL,

"C:\\AACourses08\\cmp426-

697\\AnonymousPipeChild\\Debug\\AnonymousPipeChild.exe",

NULL,

NULL,

TRUE, /* inherit handles */

0,

NULL,

NULL,

&si,

&pi))

{

fprintf(stderr, "Process Creation Failed\n");

return -1;

}



/* close the unused end of the pipe */

CloseHandle(ReadHandle);



/* the parent now wants to write to the pipe */

if (!WriteFile (WriteHandle, message, BUFFER_SIZE, &written, NULL))

fprintf(stderr, "Error writing to pipe\n");



/* close the write end of the pipe */

CloseHandle(WriteHandle);



/* wait for the child to exit */

WaitForSingleObject(pi.hProcess, INFINITE);



/* close all handles */

CloseHandle(pi.hProcess);

CloseHandle(pi.hThread);

}



Program Name: PipeChild.c





#include

#include



#define BUFFER_SIZE 25



int main(VOID)

{

HANDLE ReadHandle, WriteHandle;

CHAR buffer[BUFFER_SIZE];

DWORD read;



ReadHandle = GetStdHandle(STD_INPUT_HANDLE);

WriteHandle= GetStdHandle(STD_OUTPUT_HANDLE);



/* have the child read from the pipe */

if (ReadFile(ReadHandle, buffer, BUFFER_SIZE, &read, NULL))

printf("child: >%s

#include

#include

#include



#define BUFFER_SIZE 25

#define READ_END 0

#define WRITE_END 1



int main(void)

{

char write_msg[BUFFER_SIZE] = "Greetings";

char read_msg[BUFFER_SIZE];

pid_t pid;

int fd[2];



/** create the pipe */

if (pipe(fd) == -1) {

fprintf(stderr,"Pipe failed");

return 1;

}



/** now fork a child process */

pid = fork();



if (pid 0) { /* parent process */

/* close the unused end of the pipe */

close(fd[READ_END]);



/* write to the pipe */

write(fd[WRITE_END], write_msg, strlen(write_msg)+1);



/* close the write end of the pipe */

close(fd[WRITE_END]);

}

else { /* child process */

/* close the unused end of the pipe */

close(fd[WRITE_END]);



/* read from the pipe */

read(fd[READ_END], read_msg, BUFFER_SIZE);

printf("child read %s\n",read_msg);



/* close the write end of the pipe */

close(fd[READ_END]);

}



return 0;

}



Related docs
Other docs by Stariya Js @ B...
Lab2_Fishing_lab_pack
Views: 0  |  Downloads: 0
JMK sample legal brief
Views: 1  |  Downloads: 0
DriveQ
Views: 0  |  Downloads: 0
cybersecurity_reform_-_senate_bill_eyes
Views: 0  |  Downloads: 0
Opening and Marketing
Views: 0  |  Downloads: 0
Making_it_Work_notes
Views: 0  |  Downloads: 0
First Announcement 7th ISFS_
Views: 0  |  Downloads: 0
as90173
Views: 0  |  Downloads: 0
VNAfashionshow2010
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!