7-14 socketpair()を利用する


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/wait.h>

int
main()
{
  int sv[2];
  pid_t pid;
  char buf[128];

  memset(buf, 0, sizeof(buf));

  if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) != 0) {
    perror("pipe");
    return 1;
  }

  pid = fork();
  if (pid < 0) {
    perror("fork");
    return 1;
  }

  if (pid == 0) {
    close(sv[1]);

    read(sv[0], buf, sizeof(buf));

    printf("child process : data from parent process [%s]\n", buf);

    exit(0);

  } else {
    int status;

    close(sv[0]);

    write(sv[1], "HOGE", 4);

    printf("parent process : child process id %d\n", pid);

    wait(&status);
  }

  return 0;
}

拙著「Linuxネットワークプログラミング」の紹介

IPv6基礎検定

YouTubeチャンネルやってます!