Answer:
See explaination
Step-by-step explanation:
include <stdio.h>
#define DATA "connection request. . ."
/*
* This program creating pipe, then forks leading to the child communication to the parent with the help of pipe with one way communication.
* socket (sockets[1], the second socket of the array returned by pipe()) and read from the
* input socket (sockets[0]), but not vice versa.
*/
main()
{
int sockets[2], child;
/* Create a pipe */
if (pipe (sockets) < 0) {
perror("opening stream socket pair");
exit(1);
}
if ((child = fork()) = = -1)
perror("fork");
elseif (child) {
char buf[1024];
/* This is still the parent. It reads the child's message. */
close (sockets[1]);
if (read(sockets[0], buf, 1024) < 0)
perror("reading message");
printf(" -->%s\\", buf);
close(sockets[0]);
}else {
/* This is the child. It writes a message to its parent. */
close (sockets[0]);
if (write (sockets[1], DATA, sizeof(DATA)) < 0)
perror("writing message");
close(sockets[1]);
}
}