Да, я считаю, что вы правы, что это единственные возможности.
Вы можете подтвердить это из документации wait(2)
. Есть два связанных макроса, WIFEXITED()
и WIFSIGNALED()
, которые можно использовать, чтобы определить, почему wait
вернул данный процесс. Других возможностей нет (я не считаю WIFSTOPPED()
, так как он используется для обнаружения приостановленных процессов, а не процессов, которые завершились).
На самом деле, exit(3)
это не системный вызов, это функция библиотеки Си. Системный вызов - _exit(2)
. exit(3)
выполняет некоторую очистку C (например, очищает буферы stdio
и вызывает функции atexit()
), а затем вызывает _exit(2)
для фактического выхода из процесса.
Распределенный сервер Memcached был бы лучшим выбором, поскольку он может управлять устройством хранения данных корректно. Другое альтернативное решение состоит в том, чтобы использовать Redis, поскольку это вполне быстрее, чем Memcached, и это может сохранить другое разнообразие типа данных, и это могло использоваться в качестве базы данных также