2 терминала

 

такой случай приключился.
как обычно все много клюкают на ярлычки, когда (компы повисают) - дело не очень благодарное и вышло.

в итоге, открылся два раза терминал.
у него в тот моменты был включен советник... советник вроде один и тотже, с одни и теме же магическими числами совершает два раза сделку (из 2-х разных терминалов), в итогде на счет записано в 2-раза больше валюты...

попробовал щас включить 2-й метатарейдер одновременно с 1 не получается. а тогда получилось (сразу запустить 2-ва), я не знал что это глюк. так бы скрины сделал.

 
я щас только что перепроверил - можно запроста 2-ва запустить одинаковых, с одинаковыми советниками, жаль что счёт один и тот - же :)
 
Не клюкаю и компы не повисают:) Но странно другое, терминалы точно не были запущены из разных папок? Потому как обойти повторный запуск процесса, на мой взгляд не возможно. Ведь процессы регистрируются в системе в порядке создания. Могу допустить это следствие, если терминалу не удалось считать список модулей процесса, в связи с чем не получил путь процесса. Возникает вопрос к разработчикам, как терминалом интерпритируется отказ от открытия хандла процесса. Может он запустится если одноименный процесс не открылся? Подрузамеваю что может так как, получение списка процессов без прав отладки, и с таким именем может быть например сервис. Но неужели при тестировнии ханл нельзя получить, ведь тестирование взаимодействует с оконными событиями или нет... Короче здесь судя по всему дело в другом. У меня такое не проходит, хоть с визуализацией, хоть без, хоть как.
 
У меня без проблем такое дело. Сейчас аж 6 штук запустил, можно было и больше, да кликать надоело.
 
А ось какая у вас? И как это происходит поэтапно? Права в операционной системе? Хотя права здесь не причем...
 
xnsnet:
А ось какая у вас? И как это происходит поэтапно?
у меня ХP - дело не хитрое - кликай сильнее :) :) :) главное чтобы у тебя было открыто 0 терминалов - тогда много запустить много - легко., а вот если хоть одни открыт, то тут уж все... закрываем и кликаем..
 
У меня 2K3, обкликался уже. Не меньше 100 раз уж точно. Значит ханд процесса, почти наверняка... Так как XP с процессами как с врагами, именно поэтому работаю на Windows 2003 Server. Решение: Я думаю все же можно это дело проконтролировать, если родительский процесс не services.exe и у одноименного процесса не удается получить дескриптор путем его открытия, завершать этот процесс. Кроме того, я думаю такое возможно только в том случае если первый процесс еще не загружен. Надеюсь что при этом не используется advapi.dll и не сверяется не сам процесс а окно. Был бы терминал не запакован, я бы посмотрел, влом распаковывать:)

Не помню точно в каких случаях невозможно получить первый модуль, да и хандл процесса не обязательно получать для этого, но его не получишь если процесс не прогружен полностью. Что-то я запутался в собственных мыслях... Куда-то я не туда пришел... Надо порыться в своих прогах...
 
xnsnet:
я думаю такое возможно только в том случае если первый процесс еще не загружен. Надеюсь что при этом не используется advapi.dll и не сверяется не сам процесс а окно.

Действительно такое происходит если первый экземпляр терминала ещё только грузится. Если терминал уже полностью загрузился, то второй экземпляр не загрузить. Вообще неплохо было бы разработчикам обратить внимание на такую проблему. Я уже давно (1,5 года) стараюсь лишний раз во время запуска мышкой по иконке терминала не кликать дабы запустилась лишь одна копия терминала. Ось Windows2000SP4.
Наверняка можно эту проблему как-то решить, например через создание файла-семафора во время запуска терминала. В него записывать время запуска терминала. И если время запуска в этом файле меньше чем 1 минута к примеру, то второй экземпляр программы уже просто не станет запускаться проверив этот факт.
 
Похоже все-таки дело не в терминале, а в операционке. Наду к Биллу обращаться. Процесс не зарегистрирован, можно запускать еще. А сам терминал вернее всего использует возможности ОС. Надо уточнять как дела под Линуксом.
 
solandr:
xnsnet:
я думаю такое возможно только в том случае если первый процесс еще не загружен. Надеюсь что при этом не используется advapi.dll и не сверяется не сам процесс а окно.

Действительно такое происходит если первый экземпляр терминала ещё только грузится. Если терминал уже полностью загрузился, то второй экземпляр не загрузить. Вообще неплохо было бы разработчикам обратить внимание на такую проблему. Я уже давно (1,5 года) стараюсь лишний раз во время запуска мышкой по иконке терминала не кликать дабы запустилась лишь одна копия терминала. Ось Windows2000SP4.
Наверняка можно эту проблему как-то решить, например через создание файла-семафора во время запуска терминала. В него записывать время запуска терминала. И если время запуска в этом файле меньше чем 1 минута к примеру, то второй экземпляр программы уже просто не станет запускаться проверив этот факт.


я - 3.95 $ потерял на этом :)))) все!!! для разработке терминала! :)
 
Vinin:
Похоже все-таки дело не в терминале, а в операционке. Наду к Биллу обращаться. Процесс не зарегистрирован, можно запускать еще. А сам терминал вернее всего использует возможности ОС. Надо уточнять как дела под Линуксом.

Не, процесс регится всегда, другое дело что не всегда все данные можно получить на том или ином этапе загрузке, к тому же чем Серверная платфома не аналог сверх стабильной оси:)
Причина обращения: