Мое первое, хотя "Почему?" Но, если вам нужно, возможно, именованный канал Unix будет хорошим ответом. Это создает буфер FIFO, который читатель и писатель воспринимают как обычный файл:
В Unix
Вместо обычного неназванного конвейера оболочки именованный конвейер использует файловую систему. Он явно создается с использованием mkfifo()
или mknod()
, и два отдельных процесса могут обращаться к каналу по имени - один процесс может открыть его как читатель, а другой как писатель.
Например, можно создать канал и настроить gzip для сжатия передаваемых в него вещей:
mkfifo my_pipe
gzip -9 -c < my_pipe > out.gz &
В отдельной оболочке процесса, независимо, можно отправить данные для сжатия:
cat file > my_pipe
Именованный канал можно удалить, как и любой файл:
rm my_pipe
Другим ответом для автора будет использование именованного файла (возможно, /tmp
) для записи входных данных для дочернего процесса. Или вы могли бы связать родительский и дочерний процессы через сокет, возможно, отправив сериализованные данные EDN туда и обратно.