Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <stdio.h>
- #define DATA1 "This is from An Introductory 4.3BSD Interprocess Communication Tutorial"
- #define DATA2 "practice typing and learning C sockets"
- /*
- * This program creates a pair of connected sockets then
- * forks and communicates over them. This is very similar
- * to communication with pipes, however, socketpairs are
- * two-way communication objects. Therefore I can send
- * messages in both directions.
- */
- main()
- {
- int sockets[2], child;
- char buf[1024];
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0) {
- perror("opening stream socket pair");
- exit(1);
- }
- if ((child = fork()) == -1)
- perror("fork");
- else if (child) { /* This is the parent. */
- close(sockets[0]);
- if (read(sockets[1], buf, 1024, 0) < 0)
- perror("reading stream message");
- printf("-->%s\n", buf);
- if (write(sockets[1], DATA2, sizeof(DATA2)) < 0)
- perror("writing stream message");
- close(sockets[1]);
- } else { /* This is the child. */
- close(sockets[1]);
- if (write(sockets[0], DATA1, sizeof(DATA1)) < 0)
- perror("writing stream message");
- if (read(sockets[0], buf, 1024, 0) < 0)
- perror("reading stream message");}
- printf("-->%s\n", buf);
- close(sockets[0]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement