Если вы выполняете разветвление операционной системы низкого уровня и действительно хотите избежать использования каналов, можно также использовать файлы с отображением общей памяти. Это не так хорошо, как использование subprocess
или popen
труб, но включает в себя ответ для полноты ...
Здесь приведен полный пример , но в основном вы можете объединить os обработку файлов и mmap модули:
import mmap, os, tempfile
fd, tmpfile = tempfile.mkstemp()
os.write(fd, '\x00' * mmap.PAGESIZE)
os.lseek(fd, 0, os.SEEK_SET)
child_pid = os.fork()
if child_pid:
buf = mmap.mmap(fd, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_READ)
os.waitpid(child_pid, 0)
child_message = buf.readline()
print(child_message)
os.close(fd)
else:
buf = mmap.mmap(fd, mmap.PAGESIZE, mmap.MAP_SHARED, mmap.PROT_WRITE)
buf.write('testing\n')
os.close(fd)