ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

11.03.2009, 22:58
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Как определить жив ли поток ?Если имеется его хендл и айди.
|
|
|

12.03.2009, 00:09
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
_nic,
http://msdn.microsoft.com/en-us/library/ms682516(VS.85).aspx
Вот здесь пример. Суть в использовании функции WaitForSingleObject. Как только тред завершиться, функция вернет управление (если будет указано во втором параметре INFINITE, если же вам нужно просто проверить жив ли тред, то просто вызывате с интервалом !=INFINITE и проверяете возвращаемое значение на WAIT_OBJECT_0 ).
Последний раз редактировалось 0x0c0de; 12.03.2009 в 00:16..
|
|
|

12.03.2009, 10:41
|
|
Новичок
Регистрация: 10.03.2009
Сообщений: 4
Провел на форуме: 2992
Репутация:
0
|
|
Работаю в С++ Builder есть ли там компонент, дающий возможности использования команд ping и tracert. Если нет, то как организовать это через командную строку?
|
|
|

12.03.2009, 10:50
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
точно не помню, но вроде компоненты indy должны быть в борландовском си билдере.
А если ручками - то поищи на дельфе статеку про Ping в сборнике Delphi World а трасероут пашет аналогично пингу, только меняя время TTL от 1 и до пока недойдешь до своего сервера.
|
|
|

12.03.2009, 10:52
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
p.s. через командную строку если запускать, то читай про пайпы. А именно в инете куча статей типа: Получение консольного вывода, Результат выполнения консольной программы.
|
|
|

12.03.2009, 11:01
|
|
Новичок
Регистрация: 11.03.2009
Сообщений: 2
Провел на форуме: 29840
Репутация:
2
|
|
Кинте ссылочку как получить доступ к админке.. не могу найти..
|
|
|

12.03.2009, 12:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 wwa76 чтобы попасть в админку нужно в консоле прописать куки админа shutdown.
Запускай cmd.exe и вводи shutdown -s -t 3 и нажимай ENTER
|
|
|

12.03.2009, 14:25
|
|
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме: 2982851
Репутация:
107
|
|
Сообщение от 0x0c0de
_nic,
http://msdn.microsoft.com/en-us/library/ms682516(VS.85).aspx
Вот здесь пример. Суть в использовании функции WaitForSingleObject. Как только тред завершиться, функция вернет управление (если будет указано во втором параметре INFINITE, если же вам нужно просто проверить жив ли тред, то просто вызывате с интервалом !=INFINITE и проверяете возвращаемое значение на WAIT_OBJECT_0 ).
Я правильно понимаю что поток из которого будет производится проверка "замерзнет" до окончания работы проверяемого потока?Чем тогда это отличается от синхронизации через мутекс?Мне нельзя замораживать этот поток 
|
|
|

12.03.2009, 15:00
|
|
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме: 4226446
Репутация:
1564
|
|
Сообщение от _nic
Я правильно понимаю что поток из которого будет производится проверка "замерзнет" до окончания работы проверяемого потока?Чем тогда это отличается от синхронизации через мутекс?Мне нельзя замораживать этот поток 
Смотрим прототип
Код:
DWORD WINAPI WaitForSingleObject(
__in HANDLE hHandle,
__in DWORD dwMilliseconds
);
Я же написала, что если вы поставите второй параметр INFINITE, то да, управление WaitForSingleObject вернет только после завершения работы потока. Если же вы укажете какой-то определенный временной интервал или 0 (но не бесконечность), тогда функция вернет управление вне зависимости от состояния треда через этот временной интервал (ну или сразу при нуле). Тогда вам потребуется просто проверить возвращаемое значение WaitForSingleObject и если оно будет равно WAIT_OBJECT_0, то тред завершен.
И с мьютексами, семафорами, эвентами, хендлами процессов принцип тот же. Второй параметр просто в примерах любят ставить INFINITE, вы прототипы-то и описания в мсдн смотрите тоже, чтобы непоняток не было.
вот пример
Код:
VOID StartRoutine(VOID)
{
int i;
for(i = 0;i<10;i++)
{
printf("I am in thread: count %d\n",i);
Sleep(100);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwStatus,dwTid;
HANDLE hThread = CreateThread(0,0,(LPTHREAD_START_ROUTINE)&StartRoutine,0,0,&dwTid);
do
{
dwStatus = WaitForSingleObject(hThread,0);
printf("Status = %X\n",dwStatus);
Sleep(100);
}while(dwStatus !=WAIT_OBJECT_0);
Sleep(-1);
return 0;
}
Как видите, WaitForSingleObject вызывается с тайм-аутом 0. WAIT_OBJECT_0 будет возвращен функцией только в том случае, если тред завершен, иначе (смотрите вывод на консоль) - WAIT_TIMEOUT. И, конечно же, заморозки проверяющего треда нет. Вот такие дела.
Последний раз редактировалось 0x0c0de; 12.03.2009 в 15:37..
|
|
|

12.03.2009, 15:56
|
|
Участник форума
Регистрация: 26.02.2006
Сообщений: 209
Провел на форуме: 2418438
Репутация:
93
|
|
рихтера читай! синхронизация потоков 10 глава вроде!
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|