Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Вниз

Как отследить окончание процесса   Найти похожие ветки 

 
Tornado ©   (2004-05-12 09:11) [0]

У меня есть некая прога котораяв процессе своей работы (около 30-40 сек) создает лог-файл, причем постоянно дописывает в него данные пока работает. Прога сама не закрывается, просто останавливает работу, перестает писать в лог и все. Мне нужно отловить момент когда она закончила работать (может как-то через лог-файл?) и закрыть ее. Может есть какие еще мысли? Эту прогу запускаю через CreateProcess


 
Alx2 ©   (2004-05-12 09:23) [1]

WaitForSingleObject?


 
Alx2 ©   (2004-05-12 09:25) [2]

Сорри. Невнимательно прочел. "Перестала работать" сбило :)


 
Polevi ©   (2004-05-12 09:26) [3]

проверь открыт ли лог файл


 
Alx2 ©   (2004-05-12 09:30) [4]

Может, выручит FindFirstChangeNotification и его семейство?


 
Fedia   (2004-05-12 09:41) [5]

Может быть проверять FileAge лог-файла, если, например, 1 минуту не меняется, то работа с файлом прекращена и программу можно закрывать. Хотя предложение Polevi ©   (12.05.04 09:26) [3] мне больше нравится.


 
Tornado ©   (2004-05-12 10:00) [6]

>>> Polevi ©   (12.05.04 09:26) [3]

пожалуйста подскажите как проверить, книги нет под рукой, в нете что-то не найду. Спасибо за предложение


 
Fay ©   (2004-05-12 10:04) [7]

var
 h : Cardinal;
begin
 h := CreateFIle("c:\boot.ini", 0, 0, nil, OPEN_EXISTING, 0, 0);
 if h = Cardinal(-1) then
   begin
     if GetLastError = 32 then
       ShowMessage("Типа открыт");
     Exit;
   end;
 CloseHandle(h);
 ShowMessage("Похоже, не открыт");  
end;


 
pasha_golub ©   (2004-05-12 10:06) [8]

А вдруг программа не закрывает лог-файл?


 
Fay ©   (2004-05-12 10:13) [9]

2pasha_golub ©   (12.05.04 10:06) [8]
Да запросто! 8)


 
evvcom ©   (2004-05-12 10:19) [10]


> Прога сама не закрывается, просто останавливает работу,
> перестает писать в лог и все. Мне нужно отловить момент
> когда она закончила работать

Что значит "останавливает работу"? Усыпляет основной поток? Если это "перестает писать в лог", то это совсем не "закончила работать". Вы уж молодой человек определитесь, чего вы хотите. Если программа закончила писать в лог файл, то сама она может и завершиться без посторонней помощи, а этот момент отловить уже просто (см. [1]).


 
Polevi ©   (2004-05-12 10:20) [11]

если закрывает можно так

procedure TForm1.Button1Click(Sender: TObject);
var
 h:THandle;
begin
 h:=FindFirstChangeNotification("c:\",false,FILE_NOTIFY_CHANGE_LAST_WRITE);
 WaitForSingleObject(h,INFINITE);
 FindCloseChangeNotification(h);
 beep;
end;


 
Polevi ©   (2004-05-12 10:21) [12]

>evvcom ©   (12.05.04 10:19) [10]
я так понял в лог пишет чужая программа


 
evvcom ©   (2004-05-12 10:24) [13]


> я так понял в лог пишет чужая программа

Я так не понял:

> У меня есть некая прога котораяв процессе своей работы (около
> 30-40 сек) создает лог-файл, причем постоянно дописывает
> в него данные пока работает.


 
Polevi ©   (2004-05-12 10:32) [14]

У меня есть на диске некая прога котораяв процессе своей работы (около
> 30-40 сек) создает лог-файл, причем постоянно дописывает
> в него данные пока работает.

:))


 
Tornado ©   (2004-05-12 10:35) [15]

>>> evvcom ©   (12.05.04 10:24) [13]

прога чужая в доску (компании IBM), вообщем это выглядит так: запускается прога, просто форма с Memo или чем-то похожим, в Memo бежит список который строит эта прога, этот же список она паралельно пишет в лог. Когда список заканчивается, то и прокрутка оного в memo тоже останавливается но прога не закрывается (а очень бы хотелось чтобы она закрывалась сама!). Вот мне и надо ее закрыть НО не раньше пока она построит весь список и закинет его в лог. Надеюсь понятно описАл :)


 
Fay ©   (2004-05-12 10:39) [16]

Ну так чё, закрывает она файл или нет?


 
Tornado ©   (2004-05-12 10:45) [17]

>>> Fay ©   (12.05.04 10:39) [16]

не знаю не проверял еще но по сути должна закрывать


 
evvcom ©   (2004-05-12 10:46) [18]


> Tornado ©   (12.05.04 10:35) [15]

Ну ладно. А чего она продолжает работать? Возможно, что еще что-то в лог запишет? Или до скончания века больше ничего туда и не пишет?
Что можно посоветовать? Попробуй [11], если же файл остается открытым, то мне кажется, что самым корректным в этом случае будет внедрение dll и мониторинг записи в файл.


 
panov ©   (2004-05-12 10:56) [19]

Скомбинировав [1] и [5] можно решить эту задачу, мне кажется.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1083745384
Телефонный призрак
2004-05-05 12:23
2004.05.23
Меня кто-то преследует...


14-1083535516
Феликс
2004-05-03 02:05
2004.05.23
В сети завелся новый червь


14-1083830193
Praco
2004-05-06 11:56
2004.05.23
Где бы качнуть x-com?


3-1082663773
Mishenka
2004-04-22 23:56
2004.05.23
Связи между таблицами в Database Desktop...


1-1084217510
Serious Sam
2004-05-10 23:31
2004.05.23
Значения для Button ов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский