[Volgograd] Wait for PID

Vitalik vetalman на mail.ru
Вт Авг 26 04:07:16 MSD 2003


Hello Ablamsky,

Tuesday, August 26, 2003, 1:43:26 AM, you wrote:

AT> On Mon, Aug 25, 2003 at 10:47:47AM +0400, Serge S. Fukanchik wrote:

AT> <skip> 

>> Создание файла самый простой способ IPC ;). Если же ты  не хочешь раз в секунду
>> проверять наличие файла (вполне законно), а просто заблокировать свою прогу,
>> то используй unix sockets. Просто создай
>> такой сокет в скрипте, а для того чтобы заблокировать проверяющую прогу просто
>> попытайся прочитать из него. Когда завершится нужный процесс просто запиши в
>> этот сокет какую-нибудь ерунду и закрой его.

AT> Я тут потытался проделать тоже самое с fifo и видимо чего-то
AT> недопонял.

AT> Делаю в одном xterm:
AT> $ mkfifo /tmp/test   
AT> $ cat /tmp/test
AT> (здесь он ждет)

AT> в другом:
$ echo A>>/tmp/test
AT> в первом теминале выводится А и cat завершается.

AT> А если в скрипте:
AT> ------
AT> #!/bin/bash

AT> if [ -e /tmp/test1 ];then
AT>         cat /tmp/test1
AT>         mkfifo /tmp/test1
AT> else
AT>         mkfifo /tmp/test1
AT> fi

AT> echo "go to sleep"
AT> sleep 5
AT> echo "wake up"

echo A >> /tmp/test1

AT> rm -f /tmp/test1
AT> -----
AT> то он виснет на echo A > /tmp/test1

AT> Чего-то я элементарного похоже не понимаю.

он виснет пока кто-нибудь не попытается прочитать из него.
типа должно быть так (слишком просто вышло, у тебя красивше):
#!/bin/bash
# script #1

if [ -e /tmp/test1 ]
then
    rm -f /tmp/test1
    mkfifo /tmp/test1
echo A > /tmp/test1
rm -f /tmp/test1

--

с другой консоли просто
$ cat /tmp/test1

--

можно конечно и твой скрипт запускать
с двух консолей только один освободится
а другой зависнет

--
или еще такая игрулька:

#!/bin/bash

if [ -p /tmp/test1 ]
then
    cat /tmp/test1
else
    rm -f /tmp/test1
    mkfifo /tmp/test1
    echo A > /tmp/test1
    rm -f /tmp/test1
fi


--

fux а что это за trap?
кто и в какой момент будет это выполнять?




Подробная информация о списке рассылки Volgograd