Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Named pipe is for a bidirection communication. A named pipe (also known as a FIFO) is one of the methods for inter-process communication. Usually a

Named pipe is for a bidirection communication.

A named pipe (also known as a FIFO) is one of the methods for inter-process communication. Usually a named pipe appears as a file and generally processes attach to it for inter-process communication. A FIFO file is a special kind of file on the local storage which allows two or more processes to communicate with each other by reading/writing to/from this file. A FIFO special file is entered into the file system by calling mkfifo() in C. Once we have created a FIFO special file in this way, any process can open it for reading or writing, in the same way as an ordinary file.

The following code is for the code file namedpipe_p1.c.

// This process writes first, then reads

#include

#include

#include

#include

#include

#include

int main()

{

int fd;

// FIFO file path

char * myfifo = "./myfifo";

// Creating the named file(FIFO)

// mkfifo(, )

mkfifo(myfifo, 0666);

char arr1[80], arr2[80];

// Open FIFO for write only

fd = open(myfifo, O_WRONLY);

// Take an input arr2ing from user.

// 80 is maximum length

printf("your message: ");

fgets(arr2, 80, stdin);

// Write the input arr2ing on FIFO

// and close it

write(fd, arr2, strlen(arr2)+1);

close(fd);

// Open FIFO for Read only

fd = open(myfifo, O_RDONLY);

// Read from FIFO

read(fd, arr1, sizeof(arr1));

// Print the read message

printf("Received: %s ", arr1);

close(fd);

return 0;

}

The following code is for another code file namedpipe_p2.c.

// This program reads first, then writes

#include

#include

#include

#include

#include

#include

int main()

{

int fd1;

// FIFO file path

char * myfifo = "./myfifo";

// Creating the named file(FIFO)

// mkfifo(,)

mkfifo(myfifo, 0666);

char str1[80], str2[80];

// First open in read only and read

fd1 = open(myfifo,O_RDONLY);

read(fd1, str1, 80);

// Print the read string and close

printf("Received: %s ", str1);

close(fd1);

// Now open in write mode and write

// string taken from user.

fd1 = open(myfifo,O_WRONLY);

printf("your message: ");

fgets(str2, 80, stdin);

write(fd1, str2, strlen(str2)+1);

close(fd1);

return 0;

}

Compile the two files and run the files in two SSH terminals respectively.

Add a piece of code to each file so that (1) each process shows its pid using printf and (2) then sends its pid to another side using the named pipe. Hint: use getpid() in previous labs.

What is your modified source code for namedpipe_p1.c only?

What are the results of the two SSH terminals? Please paste the screenshots?

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

SQL For Data Science Data Cleaning Wrangling And Analytics With Relational Databases

Authors: Antonio Badia

1st Edition

3030575918, 978-3030575915

More Books

Students also viewed these Databases questions

Question

10:16 AM Sun Jan 29 Answered: 1 week ago

Answered: 1 week ago

Question

Did the team members feel that their work mattered

Answered: 1 week ago

Question

2. What process will you put in place to address conflicts?

Answered: 1 week ago