LINUX.ORG.RU

создать новый файл в 00:00:00


0

1

Программа должна работать сутками и писать файл. Имя файла это дата. Соответственно в полночь должен создаться файл с новой датой (было 1.12.2010 в полночь создался новый файл 2.12.2010 и вывод продолжился уже в него.

Проблема в том, как бы не проверять время каждую минуту, может придумали чего до меня?

★★★★★

Последнее исправление: sniper21 (всего исправлений: 2)

Ответ на: комментарий от sniper21

о_О

┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> whatis at
at (1)               - queue, examine or delete jobs for later execution
GotF ★★★★★
()
Ответ на: комментарий от GotF

Можно тогда свой демон написать.

sniper21

желательно кроссплатформенно, но и как подступиться к cron тоже выслушаю, если расскажете.

Про кроссплатформенность ничего не знаю: мастдай ненавижу всеми фибрами души.

А насчет cron'а - да почитайте же man.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от GotF

>Я так понял, нужна секундная точность.

нет не нужна.

sniper21 ★★★★★
() автор топика

Программа должна по внешнему сигналу (например kill -USR1 ) начинать писать в новый файл. А уж отправить сигнал в 00:00 часов как два байта переслать.

sdio ★★★★★
()

в месте вывода в файл - проверяй время и создавай новый файл при необходимости

x905 ★★★★★
()

>создать новый файл в 00:00:00

может придумали чего до меня?

Давно. Ровно в полночь все твои файлы превратятся в тыквы

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

Да ты че? Как?

Программа запущена и убивать ее для смены файла нельзя. Надо либо чтобы она сама следила за временем либо извне постучаться к ней (kill -USR1 например) и сказать: «дорогуша твое время вышло, одевайся^W меняй файл»

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

Это я через libastral.so пытался решить ТЗ :)

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

Даже запуск «левого» демона, «стучащего» программе по SIGUSRx, противоречит оккамовскому принципу.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от trashymichael

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

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

Eddy_Em> Даже запуск «левого» демона, «стучащего» программе по SIGUSRx, противоречит оккамовскому принципу.

Это если он «левый», а если системный cron, то очень даже юникс-вей. А то давай каждая программа будет сама реализовывать функции крона, чтобы следить за временем

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

trashymichael> чем плох вариант проверки времени, вот не понимаю в упор?

Не юникс-вей, в системе уже есть такая программа (cron) и за временем она умеет следить лучше

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

Жесть же какая-то получается: программа все равно должна будет определить время/дату, чтобы вычислить имя файла. Почему бы это просто не делать при каждой очередной записи?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Тебе просто хочется поспорить, хоть о чем-то?

Это все-равно, как во время еды перед каждой ложкой смотреть на часы, не пора ли уже идти, вместо того чтобы поручить будильнику пропищать в нужное время.

sdio ★★★★★
()

А это случайно не вы спрашивали недавно как создать файл с именем из QDate? Если да, то посмотрите в сторону QTimer.

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

помоему всетаки будет надежнее если программа сама будет время проверять, а как тебя послушать то и ложку ко рту подносить — еду пережевывать — в глотку ее запихивать — ферменты в желудок подливать должны разные люди, иначе не юниксвей!

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

В любом случае, записать что-то в файл - это дольше, чем проверить время (во всяком случае, так говорит здравый смысл, хотя чёрт его знает, как оно на самом деле?)

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

Какой критерий элегантности? Этой грязной работой всё равно кто-то будет заниматься. Можно срать в fifo, и отдельным приложением хендлить выхлоп, но кому это надо?

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

>А ваша программа не добавляет время в запись события лога?

wait! oh shi~

Corey
()
Ответ на: комментарий от Suntechnic

Suntechnic> А ваша программа не добавляет время в запись события лога?

1. Это именно лог?
2. Гарантируете запись каждую минуту, или все же будем в пустом цикле раз в минуту проверять время?

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

1. Блин, а ведь возможно это не лог - почему-то так подумалось и потом уже даже не предпологал, что это может быть чем-то другим...

2. Зачем? Достаточно проверять перед каждой записью. Кстати такой вариант кажется более разумным чем любой другой - просто не хранить имя файла в переменной, а каждый раз получать его из текущей даты.

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

Suntechnic> просто не хранить имя файла в переменной, а каждый раз получать его из текущей даты.

Что-то меня этот детский сад утомил. В некоторых популярных ЯП пишут не по имени файла, а по файловому дескриптору, т.е. кроме получения даты, надо будет еще именна файлов сравнивать. и т.д. ...

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

> В некоторых популярных ЯП пишут не по имени файла, а по файловому дескриптору

А в некоторых, не держат поток открытым сутками.

Но даже если так - какие проблемы хранить имя файла котрый используется для записи сейчас и сверять эту переменную с вновь полученным? Или в некоторых популярных ЯП сравнение строк столь длительная операция, что этого надо избегать и прикручивать к ним cron?

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

просто посмотри на apache, squid, ... почему они не занимаются ротацией логов?

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

Тогда использовать settimer и в полночь ловить SIGALRM

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