Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.UNIX.BSD
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.UNIX.BSD с датами от 18 Jan 11 22:51:00 до 09 Aug 24 15:07:25, всего сообщений: 10761
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 7518 из 10761 ===================================== RU.UNIX.BSD =
От   : Eugene Grosbein                  2:5006/1           16 May 18 15:31:00
Кому : Victor Sudakov                                      16 May 18 15:31:00
Тема : Re: Makefile
FGHI : area://RU.UNIX.BSD?msgid=grosbein.net+fd914f6d
На   : area://RU.UNIX.BSD?msgid=2:5005/49+5afb91ad
= Кодировка сообщения определена как: IBM866 =================================
Ответ: area://RU.UNIX.BSD?msgid=2:5005/49+5afbf2c5
==============================================================================
16 мая 2018, среда, в 07:04 NOVT, Victor Sudakov написал(а):

EG>> И в третий раз спрошу, а можно всё-таки услышать ответ?
EG>> Потому как теоретически решение от него не зависит,
EG>> но практически очень даже.

VS> В реальности есть скрипт, который пробегает лог-файл и создаёт по нему N
VS> отчётов, каждый отчёт в свой файл. Все отчёты генерятся за один проход скрипта.
VS> Потом отчёты скармливаются другим программам.
VS> В общем-то ничто не мешает переписать этот скрипт, чтобы создавать по одному
VS> отчёту за один запуск. Hо это некрасиво и медленнее примерно в N раз.

Да, это было бы плохое решение. Я в своих скриптах, для которых важно
отсутствие двойного запуска, добавляю в самое начало:

#!/bin/sh

: ${TMPDIR:=/var/tmp}
if [ "$1" != "-locked" ]; then
  lockf -t0 $TMPDIR/$0.lock $0 -locked "$@"
  exit 0
fi
shift

То есть, если запущены без блокировки, попытаться захватить
блокировку и если получилось - работать дальше, а иначе exit 0.

>> Так что там в реальности-то? Если это нечто пишет в файл, не создавая
>> собственных блокировок против параллельной записи другой своей копией,
>> то эта проблема вообще не имеет отношения к make и решается стандартно,
>> приписыванием lockf к вызову этого нечта.
VS> Hу вот я описал выше. Исходный лог-файл один, скрипт рассчитан на один проход,
VS> зачем ему заморачиватьcя с блокировками?

Чтобы не повредить создаваемые файлы.

VS> (Из другого твоего письма)
>> А ещё лучше без цикла и поллинга:
>> lockf -t0 lockfile ... && [ $? != 75 ] && lockf lockfile /usr/bin/true
VS> Вижу нечто изящное, но не понимаю что делает. Применимо к описанной выше
VS> практической задаче?

Рассчитано на команду, которая сама не использует lockf -
попытаться обернуть её в блокировку и если получилось, то и норм,
а если блокировка уже стоит, то подождать её отпускания без цикла.

EG>> Аргумент if somebody does something like "touch generate_output"
EG>> просто смешон, а если самбоди с правами за запись в obj подменит
EG>> сгенерированные файлы там и/или подставит им фейковые mtime?
VS> В целом да, аргумент достаточно надуманный, но иллюстрирует ущербность make и
VS> костыльность workaround-а.

Обожемой, а что у нас не костыльное-то?

VS> А модификатор .WAIT нельзя как-нибудь тут полезным образом использовать?

Впервые слышу про него :-)

Eugene
--
Enter old password: xxx
Enter new password: yyy
Confirm password: подтверждаю
--- slrn/1.0.2 (FreeBSD)
* Origin: RDTC JSC (2:5006/1@fidonet)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.113680 секунды