#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #define BUFFER_SIZE 100 int main() { int fd[2]; // File descriptors for the pipe pid_t pid; char write_msg[BUFFER_SIZE] = "Hello from parent process!"; char read_msg[BUFFER_SIZE]; // Create the pipe if (pipe(fd) == -1) { perror("pipe"); exit(EXIT_FAILURE); } // Fork a child process pid = fork(); if (pid < 0) { perror("fork"); exit(EXIT_FAILURE); } if (pid > 0) { // Parent process close(fd[0]); // Close the read end of the pipe // Write to the pipe write(fd[1], write_msg, strlen(write_msg) + 1); close(fd[1]); // Close the write end of the pipe } else { // Child process close(fd[1]); // Close the write end of the pipe // Read from the pipe read(fd[0], read_msg, BUFFER_SIZE); printf("Child process received message: %s\n", read_msg); close(fd[0]); // Close the read end of the pipe } return 0; }