aboutsummaryrefslogtreecommitdiffstats
path: root/csci4061/101920_breakout/pipe_template.c
diff options
context:
space:
mode:
Diffstat (limited to 'csci4061/101920_breakout/pipe_template.c')
-rw-r--r--csci4061/101920_breakout/pipe_template.c65
1 files changed, 0 insertions, 65 deletions
diff --git a/csci4061/101920_breakout/pipe_template.c b/csci4061/101920_breakout/pipe_template.c
deleted file mode 100644
index 2c37941..0000000
--- a/csci4061/101920_breakout/pipe_template.c
+++ /dev/null
@@ -1,65 +0,0 @@
-// -----------------------------------------------------------------------------
-// Pipes
-//
-// Write a program that creates a child process and pipes the string
-// "hello child" to the child to be printed. The parent should wait for the
-// child to terminate
-//
-// Template: Implement the TODOs
-//
-// Expected output:
-// Parent Sending: hello child
-// Child Received: hello child
-// -----------------------------------------------------------------------------
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-int main(void) {
- // Open pipe
- int ends[2];
- pipe(ends);
-
- char string_to_send[] = "hello child";
- int bytes_to_send_recv = strlen(string_to_send) + 1;
-
- // Create child process
- pid_t pid = fork();
- if (pid < 0) {
- // Error
- fprintf(stderr, "ERROR: Failed to fork\n");
- }
- else if (pid > 0) {
- // Parent
- printf("Parent Sending: %s\n", string_to_send);
-
- // Parent doesn't need read file descriptor
- close(ends[0]);
- // Write the string to the pipe
- write(ends[1], string_to_send, bytes_to_send_recv);
- // Done writing
- close(ends[1]);
- // Wait for child to terminate
- wait(NULL);
- }
- else {
- // Child
-
- char *recv_buffer = malloc(bytes_to_send_recv);
-
- // Child doesn't need write file descriptor
- close(ends[1]);
- // Read the string from the pipe
- read(ends[0], recv_buffer, bytes_to_send_recv);
- // Done reading
- close(ends[0]);
- // Print result
- printf("Child Received: %s\n", recv_buffer);
- free(recv_buffer);
- }
-
- return 0;
-}