как убить группу процессов в clzure cl? - PullRequest
1 голос
/ 21 декабря 2011

Я хочу запустить команду оболочки в ccl, но по какой-то причине эта команда может зависнуть. Поэтому я хочу уничтожить все подпроцессы, сгенерированные этой командой. Как я могу это сделать?

Я пробовал trivial-shell для запуска команды оболочки, когда команда не зависла, она работает хорошо.

Я также использую макрос with-timeout, который находится в trivial-shell для проверки тайм-аута, он просто дает мне условие timeout-error, процесс оболочки все еще работает там. Здесь я просто хочу убить их всех и вернуть что-нибудь.

Спасибо всем.

1 Ответ

2 голосов
/ 21 декабря 2011

Насколько я могу судить, trivial-shell обеспечивает только синхронный вызов оболочки, поэтому нет простого способа завершить текущие подпроцессы.

Я предлагаю вызывать специфическую для реализации ccl:run-program функцию Clozure Common Lisp с помощью :wait nil для выполнения заданий асинхронно.Затем вы можете вызвать ccl:signal-external-process на работающем процессе, чтобы убить его, если вам нужно. Документация здесь .

...