[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