Если оба процесса принадлежат одному и тому же пользователю, то вы можете просто использовать procfs.
char fd_path[64]; // actual maximal length: 37 for 64bit systems
snprintf(fd_path, sizeof(fd_path), "/proc/%d/fd/%d", SOURCE_PID, SOURCE_FD);
int new_fd = open(fd_path, O_RDWR);
Конечно, вам понадобится какой-то механизм IPC для совместного использования значения SOURCE_FD
. См. " Linux C: после получения сигнала можно узнать PID отправителя? ".