Программное закрытие зависшей консоли.

Простейшие вопросы в области инженерной разработки
Ответить
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Программное закрытие зависшей консоли.

Сообщение Юрий »

Запущенная через командную строку программа звисла. Как её программно закрыть? Нашёл такую команду - TASKKILL. Быстренько просмотрев её, вижу, что с её помощью можно осуществить желаемое. На этом этапе хотелось бы понять есть ли ещё какие варианты и по какому лучше пойти в Labview/
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение Юрий »

Прошёл видимый и понятный вариант, вот, что получилось.
2022-01-24_015021.png
2022-01-24_015021.png (7.67 КБ) 1601 просмотр
Вложения
Закрытие консоли.zip
(62.39 КБ) 38 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение dadreamer »

Юрий писал(а): 23 янв 2022, 13:56Нашёл такую команду - TASKKILL. Быстренько просмотрев её, вижу, что с её помощью можно осуществить желаемое. На этом этапе хотелось бы понять есть ли ещё какие варианты и по какому лучше пойти в Labview/
Это самое простое и универсальное (если говорить о Windows) решение. Остальное будет сложнее. Например, есть функция TerminateProcess, она требует на входе хэндл процесса. Вам придётся "нестандартно" запускать приложение, чтобы получить его хэндл и передать в функцию. Вам это надо? :)
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение Юрий »

Решил облагородить программку, надеюсь, что может быть полезна.
1.png
2.png
3.png
Вложения
Закрытие консоли+.zip
(69.5 КБ) 43 скачивания
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Программное закрытие зависшей консоли.

Сообщение Borjomy_1 »

Более элегантный способ. У этого компонента (Process) есть множество других методов. В том числе получение списка процессов и прочее.
Вложения
process kill.png
process kill.png (12.86 КБ) 1490 просмотров
Юрий
leader
leader
Сообщения: 526
Зарегистрирован: 28 фев 2010, 18:04
Версия LabVIEW: LV2018
Благодарил (а): 10 раз
Поблагодарили: 18 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение Юрий »

Borjomy_1 писал(а): 26 янв 2022, 13:51 Более элегантный способ. У этого компонента (Process) есть множество других методов. В том числе получение списка процессов и прочее.
Вот так. Век живи, век учись, а всё равно помрёш. Но всё равно спасибо :wink: .
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение dadreamer »

Borjomy_1 писал(а): 26 янв 2022, 13:51Более элегантный способ.
На Винде тот же самый TerminateProcess и вызывается. Я проверил в отладчике. Если б результат отработки вызова возвращался, был бы доп. профит какой-то (1 - успех, 0 - неудача). А так, лишняя привязка к .NET, в общем, на вкус и цвет.

Для общего развития: 12 ways to terminate a process
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: Программное закрытие зависшей консоли.

Сообщение Borjomy_1 »

dadreamer писал(а): 26 янв 2022, 19:59 Если б результат отработки вызова возвращался, был бы доп. профит какой-то (1 - успех, 0 - неудача).
Вообще-то результат вызова возвращается. Если например указывается неверный ID, возвращается ошибка.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Программное закрытие зависшей консоли.

Сообщение dadreamer »

Borjomy_1 писал(а): 26 янв 2022, 21:36Вообще-то результат вызова возвращается. Если например указывается неверный ID, возвращается ошибка.
Я имел ввиду, удалось грохнуть или нет. Бывают процессы, которые так просто не прихлопнуть (висит или недостаточно прав). Для уверенности придётся поллить список процессов или проверять свойство HasExited.
Ответить

Вернуться в «Для чайников»