flingfd介绍

Posted by Tenghuan He on January 3, 2018

Github上面对flingfd的介绍简明扼要

flingfd is a small, standalone C library to pass file descriptors across processes on Linux.

用于在Linux平台上进程之间传递文件描述符的C语言库。

flingfd库主要提供了两个功能调用

bool flingfd_simple_send(const char *path, int fd);
int flingfd_simple_recv(const char *path);

如果你想把一个文件描述符从一个进程发送给另一个进程,在发送进程中调用flingfd_simple_send,然后在接收进程中调用flingfd_simple_recv,同时要确保你在两个进程中的设置的path参数相同。

下面的例子把stdout从一个进程发送给另一个进程

#include <flingfd.h>


void send_my_stdout() {
  int fd = fileno(stdout);
  flingfd_simple_send("/tmp/some_unique_path", fd);
}

接下来另一个进程往发送者的stdout写入

#include <flingfd.h>


void write_to_their_stdout() {
  int fd = flingfd_simple_recv("/tmp/some_unique_path");
  write(fd, "Hello world\n", 12);
}

编译代码的时候记得加上-lflingfd