Я пытаюсь запустить Qemu на своем Mac, и у меня есть некоторые трудности. Я использую OS X 10.8.2 и установил Qemu 1.2.50 через их репозиторий.

Обновление: только что обновили до Qemu 1.3.50 и проблема осталась прежней.

Когда я бегу

qemu-system-i386

из командной строки все работает хорошо, и я могу прекратить выполнение, используя Ctrl-C. Однако, как только я добавлю -vnc:0, я больше не смогу завершить работу, не убив процесс из Activity Monitor.

Моя проблема в том, что я не просто время от времени запускаю Qemu вручную, но у меня есть Java-программа, которая требует Qemu для выполнения какой-либо задачи по протоколу vnc, поэтому ручное отключение не вариант.

Поэтому в какой-то момент в моей программе я запускаю поток, который делает:

Runtime rt = Runtime.getRuntime();
process = rt.exec("/usr/local/bin/qemu-system-i386 -vnc :0");
// Some stuff via vnc protocol

В какой-то момент из моего основного потока я звоню:

process.destroy();

Это не завершает Qemu в OS X. Тот же код работает с Qemu 1.2.0 в Ubuntu 12.10

Поэтому я думаю, мой вопрос заключается в том, как правильно завершить работу Qemu с включенным vnc в OS X.

Или, может быть, я мог бы просто попытаться принудительно завершить процесс Qemu, как это делает Менеджер активности?

1 ответ1

0

Обновление от 18 августа 2017 г. Похоже, что проблема решена с помощью QEMU версии 2.9.0.


Я отправил отчет об ошибке в Qemu и получил ответ:

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

В качестве обходного пути вы можете отправить QEMU сигнал SIGKILL, который внезапно прекратит работу QEMU (примечание: если у вас есть образ диска с возможностью записи, вы можете обнаружить, что он поврежден, так как это далеко от чистого выключения). Наилучшим подходом было бы сделать так, чтобы гость чисто выключил виртуальную машину, что должно привести к автоматическому завершению QEMU.

От: Qemu Bug tracker

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .