Дочерний процесс, обнаруживающий смерть родительского процесса в Python

Это должно работать:

final Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.TetherSettings");
intent.setComponent(cn);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

Однако это может зависеть от фактического устройства, Samsung, LG, Sony могут отличаться.

8
задан Evan Fosmark 17 April 2009 в 07:56
поделиться

3 ответа

Если ваш процесс Python работает под Linux, а системный вызов prctl () открыт , вы можете использовать ответ здесь .

Это может привести к отправке сигнала ребенку, когда родительский процесс умирает.

4
ответ дан 5 December 2019 в 19:02
поделиться

Возможно, вам очень скоро удастся прочитать идентификатор вашего родительского процесса, а затем проверить, но, конечно, это склонно к условиям гонки. Родитель, который сделал порождение, мог умереть немедленно, и даже до того, как ваш процесс выполнил свою первую инструкцию.

Если у вас нет способа проверить, относится ли данный PID к «ожидаемому» родителю, я думаю, что трудно делать надежно.

1
ответ дан 5 December 2019 в 19:02
поделиться

Единственный известный мне надежный способ - это создать канал специально для этой цели. Дочернему ребенку придется неоднократно пытаться читать из конвейера, желательно неблокирующим образом или используя select. Будет выдана ошибка, если канал больше не существует (предположительно из-за смерти родителя).

2
ответ дан 5 December 2019 в 19:02
поделиться
Другие вопросы по тегам:

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