То, как возможно, что уничтожают-9 для процесса на Linux, не имеет никакого эффекта?

Каждый из touchesBegan..., touchesMoved..., touchesEnded..., touchesCancelled... имеет набор касаний в качестве входного параметра. Система гарантирует, что у каждого пальца одинаковые UITouch от начала до конца / отменены.
Прямо сейчас вы обрабатываете только один палец, используя touches.first. Вместо этого вам нужно нарисовать отдельную линию для каждого прикосновения. Что-то вроде:

  override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        touches.forEach { touch in
            line[touch]?.end = touch.location(in: self)
        }
        setNeedsDisplay()
    }
64
задан Aaron Digulla 13 April 2009 в 20:26
поделиться

6 ответов

Как отмечено в комментариях к OP, состояние процесса (STAT) из D указывает, что процесс находится в "бесперебойном сне" состояние. В реальных терминах это обычно означает, что ожидает на вводе-выводе и может/, делают что-либо - включая смерть - до, который завершает операция ввода-вывода.

Процессы в a D состояние обычно только будет там для части секунды, прежде чем операция завершится, и они возвращаются к R/S. По моему опыту, если процесс застревает в D, это чаще всего пытается общаться с недостижимым NFS или другой удаленной файловой системой, пытаясь получить доступ к провальному жесткому диску, или используя некоторую часть аппаратных средств посредством облупленного драйвера устройства. В таких случаях единственный способ восстановиться и позволить процессу умирать состоит в том, чтобы или вернуть фс/диск/аппаратные средства и работающий, таким образом, ввод-вывод может завершиться или сдаваться и перезагружать систему. В конкретном случае NFS монтирование может также в конечном счете время туда и обратно от операции ввода-вывода (с кодом неисправности), но это зависит от опций монтирования, и это очень характерно для NFS, монтируется, чтобы быть установленным ожидать навсегда.

Это отлично от процесса-зомби, который будет иметь состояние Z.

125
ответ дан Dave Sherohman 24 November 2019 в 15:48
поделиться

Действительно ли это возможно, что этот процесс перезапущен (например, init) просто в то время, когда Вы уничтожаете его?

Можно проверить это легко. Если PID является тем же после kill -9 PID затем процесс не был уничтожен, но если он изменился, процесс был перезапущен.

1
ответ дан Georg Schölly 24 November 2019 в 15:48
поделиться

PS-ef | grep Firefox; и Вы видите 3 процесса, уничтожаете их всех.

0
ответ дан 24 November 2019 в 15:48
поделиться
sudo killall -9 firefox

Должен работать

Править: [PID] изменяется на Firefox

0
ответ дан karim79 24 November 2019 в 15:48
поделиться

Перепроверка, что родительский идентификатор равняется действительно 1. В противном случае и это firefox, сначала попробуйте sudo killall -9 firefox-bin. После этого попытайтесь уничтожить определенные идентификаторы процесса индивидуально с sudo killall -9 [process-id].

Как для процесса даже возможно не послушать для уничтожения-9 (ни как пользователь, ни как корень)?

Если процесс пошел <defunct> и затем становится зомби с родителем 1, Вы не можете уничтожить его вручную; только init может. Процессы-зомби являются уже давно умершими - они потеряли способность, которая будет уничтожена, поскольку они больше не процессы, только запись таблицы процессов и ее связанный код выхода, ожидая, чтобы быть собранными. Необходимо уничтожить родителя, и Вы не можете уничтожить init по очевидным причинам.

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

8
ответ дан Dave Sherohman 24 November 2019 в 15:48
поделиться

Можно также сделать pstree и уничтожить родителя. Это удостоверяется, что Вы получаете все незаконное дерево процесса и не только лист.

0
ответ дан Eric Holmberg 24 November 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: