进程间通信之socketpair

绝地灬酷狼 2022-01-06 10:51 309阅读 0赞

socketpair是进程间通信的一种方式。

API:

  1. int socketpair(int domain, int type, int protocol, int sv[2]);

DEMO:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <sys/socket.h>
  7. #include <fcntl.h>
  8. #include <unistd.h>
  9. #define MAXLINE 4096
  10. int main(int argc, char **argv) {
  11. int fd[2];
  12. pid_t pid;
  13. char line[MAXLINE];
  14. int n;
  15. if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) < 0) {
  16. perror("socketpair error");
  17. exit(1);
  18. }
  19. if ( (pid = fork()) < 0) {
  20. perror("fork error");
  21. exit(1);
  22. } else if (pid > 0) {
  23. close(fd[1]);
  24. write(fd[0], "hello world\n", 12);
  25. char tmp[MAXLINE];
  26. read(fd[0], tmp, MAXLINE);
  27. printf("echo is: %s\n", tmp);
  28. } else {
  29. close(fd[0]);
  30. n = read(fd[1], line, MAXLINE);
  31. write(STDOUT_FILENO, line, n);
  32. char tmp[] = "world says hi";
  33. write(fd[1], tmp, strlen(tmp));
  34. }
  35. exit(0);
  36. }

和管道和命名管道相比,socketpair有以下特点:

  1. 全双工

  2. 可用于任意两个进程之间的通信

转载于:https://www.cnblogs.com/gattaca/p/6548098.html

发表评论

表情:
评论列表 (有 0 条评论,309人围观)

还没有评论,来说两句吧...

相关阅读

    相关 进程通信

    进程间通信(IPC,Inter-Process Communication),是指两个或两个以上的进程之间传递数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位,每

    相关 进程通信

    进程间通信的基本概念 进程间通信意味着两个不同进程间可以交换数据,操作系统中应提供两个进程可以同时访问的内存空间。 通过管道实现进程间通信 基于管道(P

    相关 进程通信

    程序员必须让拥有依赖关系的进程集协调,这样才能达到进程的共同目标。可以使用两种技术来达到协调。第一种技术在具有通信依赖关系的两个进程间传递信息。这种技术称做进程间通信(inte

    相关 进程通信信号

    概念:信号(signal)是一种软件中断,是UNIX系统中最为古老的进程之间的通信机制。用于在一个或多个进程之间传递异步信号。它提供了一种处理异步事件的方法,也是进程间惟一的异

    相关 进程通信

    进程间通信 1. 前言 2. 使用文件实现进程间的通信 3. 使用管道实现进程间的通信 4. 共享内存 5. 以上三种通信方式的区别