Question
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()
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 = "/tmp/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 = "/tmp/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.
Hint: gcc sourcecode.c -o outputfile.out
What is the output you have observed? Please paste the screenshots.
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() as what you did in previous labs.
What is your modified source code for namedpipe_p1.c only?
What are the results on the two SSH terminal? Please paste the screenshots?
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started