LINUX.ORG.RU

cmd1 | cmd2 | cmd3


0

0

Как такое реализовать(вызов такой команды) с помощью
C, без использования system?

как это делает bash, zsh и т.д.

anonymous

Делаешь две трубы (pipe), потому пускаешь процессы по мере fork/execve.
Перед вызовом соответствующей программы (execve) связываешь (dup2) соответствующие стороны сделанных труб с stdin и stdout.

Murr ★★
()
Ответ на: комментарий от Murr

А есть ли переносимый способ создать дуплексынй пайп? Кроме socketpair, он вроде плохо переносим. 2 вызова pipe не предлагать, нужен именно один файловый дескриптор. Можно конечно делать через AF_UNIX (или даже AF_INET), вроде более менее переносимо, но что-то помоему это не то.

PS. Не спрашивайте, что за задача, просто спортивный интерес. Я знаю что почти всегда можно обойтись двумя пайпами или каким-то другим видом IPC.

OxiD ★★★★
()
Ответ на: комментарий от watashiwa_daredeska

>А он разве дуплексный?

Как минимум в Linux.

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.