18:01

Как можно запустить два процесса, чтобы стандартный выход одного поступал на вход другого и наоборот?

Комментарии
05.11.2009 в 18:07

Крайне злопамятное хамло ;)
Через промежуточный текстовый файл например)
05.11.2009 в 18:23

adjective, а через пайп что, не работает? ls | grep txt
05.11.2009 в 23:18

видимо дело тут в "и наоборот"

как это сделать в винде не знаю, в юнихах можно попробовать через фифы

но вообще подобных циркулярных схем лучше избегать. вам это для чего нужно?
06.11.2009 в 15:06

Пайп работает только в одну сторону.
Что такое фиф?
06.11.2009 в 15:19

я так понимаю, fifo

adjective, опиши конечную задачу
09.11.2009 в 13:07

решаем проблемы с головой!
Не будете отвечать?
15.11.2009 в 11:40

Задача -- проверка решения интерактивной олимпиадной задачи. Два процесса -- это решение и "интерактор". На WINAPI задача запуска с перенаправлением решается, но там около 150 строк, некрасиво.
15.11.2009 в 12:59

так вам под какую ОС то? есть вообще какие-то требования? на чём написан этот "интерактор"? если я вам покажу как такое сделать в баше, вам это поможет?
17.11.2009 в 17:59

win xp или линух. Delphi. да
18.11.2009 в 01:45

дельфи нет. в смысле под винду я вам ничего кроме tcp/ip не посоветую, а в линухе нет дельфи. есть кайликс, но я не видел ни одной программы на ней написанной, и есть freepascal+lazarus, но, но.

вощем резюме: средства операционной системы мало для этого подходят, а вот тот же самый tcp/ip подходит для этого очень хорошо, дальше сами например.
25.11.2009 в 12:30

программа консольная и отлично собирается FPC.
25.11.2009 в 13:01

ну вот, держите набросок:


----------server-----------
#!/bin/bash
readonly iFIFO='/tmp/testfifo.in'
readonly oFIFO='/tmp/testfifo.out'
[[ -e "$iFIFO" ]] || mkfifo "$iFIFO"
[[ -e "$oFIFO" ]] || mkfifo "$oFIFO"
exec 3<"$iFIFO" 4>"$oFIFO"
while read; do
if (( REPLY > 16384 )); then
echo 'positive' >& 4
else
echo 'negative' >& 4
fi
done <& 3
----------------------------

----------client------------
#!/bin/bash
readonly iFIFO='/tmp/testfifo.in'
readonly oFIFO='/tmp/testfifo.out'
[[ -r "$oFIFO" ]] || exit 255
[[ -w "$iFIFO" ]] || exit 255
exec 3>"$iFIFO" 4<"$oFIFO"
while sleep 1; do
TEST="$RANDOM"
echo "$TEST" >& 3
read REPLY <& 4
echo "$TEST: $REPLY"
done
----------------------------