Возможно, мне просто не хватает чего-то очевидного в API System.Process (http://hackage.haskell.org/package/process), но, похоже, он не поддерживает получение исходного PID созданного процесса. API обычно возвращает ProcessHandle, который можно использовать достаточно легко, но это, похоже, не соответствует потребностям развертывания, которые у меня есть.Как получить идентификатор процесса созданного процесса в Haskell?
У меня есть случай, когда я хочу запустить длительный процесс, зарегистрировать PID, который он использует, и иметь возможность автоматически возвращаться в более позднее время (дни, недели, месяцы) и убивать старый процесс и повторно -START с новым процессом. Я уверен, что есть несколько способов сделать это автоматически развернуть и перезапустить, но PID выглядели как самый простой способ сделать это без слишком большого кода, зависящего от платформы.
Я открыт для других предложений по моей основной проблеме, но мне кажется странным, что я не могу найти прямых ссылок PID (или способ их преобразования в API процесса). Это похоже на контроль API.
Можете ли вы использовать пакет '' unix' '(http://hackage.haskell.org/package/unix-2.7.0.1/docs/System-Posix-Process.html) вместо 'process'? –
... или ['Win32'] (http://hackage.haskell.org/package/Win32-2.2.2.0/docs/System-Win32-Process.html). Общий момент заключается в том, что API-интерфейсы, специфичные для ОС, обычно более мощные, чем кросс-платформенные, поскольку кросс-платформенные могут поддерживать только те вещи, которые поддерживаются всеми ОС. –
Правда, API-специфичные API, как правило, более мощные. Но, это немного раздражает, когда _one_ вещь останавливает ваш код от полной переносимости. – stormont