System.Posix.Process.ByteString
| Copyright | (c) The University of Glasgow 2002 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | libraries@haskell.org |
| Stability | provisional |
| Portability | non-portable (requires POSIX) |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Содержание
Описание
Поддержка процессов POSIX. См. также модули System.Cmd и System.Process в пакете process.
Процессы
Разветвление и выполнение
forkProcess :: IO () -> IO ProcessID Source
forkProcess соответствует системному вызову POSIX fork. Действие IO, переданное в качестве аргумента, выполняется в дочернем процессе; никакие другие потоки не будут скопированы в дочерний процесс. В случае успеха, forkProcess возвращает ProcessID дочернего процесса родителю; в случае ошибки выбрасывается исключение.
Состояние маскирования исключений выполняемого действия наследуется (c.f. forkIO), см. также forkProcessWithUnmask (since: 2.7.0.0).
forkProcess поставляется с огромным предупреждением: поскольку любые другие запущенные потоки не копируются в дочерний процесс, легко ошибиться: например, обращаясь к какому-либо общему ресурсу, который удерживался другим потоком в родительском процессе.
forkProcessWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ProcessID Source
Вариант forkProcess в стиле forkIOWithUnmask.
Since: 2.7.0.0
Аргументы
| :: RawFilePath | Команда |
| -> Bool | Поиск в PATH? |
| -> [ByteString] | Аргументы |
| -> Maybe [(ByteString, ByteString)] | Среда |
| -> IO a |
executeFile cmd args env вызывает один из семейства execv*, в зависимости от того, следует ли искать текущий PATH для команды и предоставляется ли среда для замены текущей среды процесса. Базовое имя (ведущие имена каталогов подавлены) команды передается в execv* как arg[0]; список аргументов, переданный в executeFile, поэтому начинается с arg[1].
Завершение работы
exitImmediately :: ExitCode -> IO () Source
exitImmediately status вызывает _exit для завершения процесса с указанным кодом выхода status. Операция никогда не возвращается.
Среда процесса
getProcessID :: IO ProcessID Source
getProcessID вызывает getpid для получения ProcessID текущего процесса.
getParentProcessID :: IO ProcessID Source
getProcessID вызывает getppid для получения ProcessID родительского процесса текущего процесса.
Группы процессов
getProcessGroupID :: IO ProcessGroupID Source
getProcessGroupID вызывает getpgrp для получения ProcessGroupID текущего процесса.
getProcessGroupIDOf :: ProcessID -> IO ProcessGroupID Source
getProcessGroupIDOf pid вызывает getpgid для получения ProcessGroupID процесса pid.
createProcessGroupFor :: ProcessID -> IO ProcessGroupID Source
createProcessGroupFor pid вызывает setpgid для того, чтобы сделать процесс pid новым лидером группы процессов.
joinProcessGroup :: ProcessGroupID -> IO () Source
joinProcessGroup pgid вызывает setpgid для установки ProcessGroupID текущего процесса на pgid.
setProcessGroupIDOf :: ProcessID -> ProcessGroupID -> IO () Source
setProcessGroupIDOf pid pgid вызывает setpgid для установки ProcessGroupIDOf процесса pid на pgid.
Сессии
createSession :: IO ProcessGroupID Source
createSession вызывает setsid для создания новой сессии с текущим процессом в качестве лидера сессии.
Время работы процесса
data ProcessTimes Source
Конструкторы
| ProcessTimes | |
Поля | |
getProcessTimes :: IO ProcessTimes Source
getProcessTimes вызывает times для получения информации об учёте времени для текущего процесса и его дочерних процессов.
Приоритет планирования
getProcessPriority :: ProcessID -> IO Int Source
getProcessGroupPriority :: ProcessGroupID -> IO Int Source
getUserPriority :: UserID -> IO Int Source
setProcessPriority :: ProcessID -> Int -> IO () Source
setProcessGroupPriority :: ProcessGroupID -> Int -> IO () Source
setUserPriority :: UserID -> Int -> IO () Source
Состояние процесса
data ProcessStatus Source
Код завершения процесса
Конструкторы
| Exited ExitCode | процесс завершился, вызвав |
| Terminated Signal Bool |
процесс был завершен сигналом, С версии: 2.7.0.0 |
| Stopped Signal | процесс был остановлен сигналом |
Реализации
getProcessStatus :: Bool -> Bool -> ProcessID -> IO (Maybe ProcessStatus) Source
getProcessStatus blk stopped pid вызывает waitpid, возвращая Just tc, состояние ProcessStatus процесса pid, если оно доступно, Nothing в противном случае. Если blk равно False, то WNOHANG устанавливается в параметрах для waitpid, в противном случае — нет. Если stopped равно True, то WUNTRACED устанавливается в параметрах для waitpid, в противном случае — нет.
getAnyProcessStatus :: Bool -> Bool -> IO (Maybe (ProcessID, ProcessStatus)) Source
getAnyProcessStatus blk stopped вызывает waitpid, возвращая Just (pid, tc), идентификатор ProcessID и состояние ProcessStatus любого дочернего процесса, если дочерний процесс завершился, или Nothing, если есть дочерние процессы, но ни один из них не завершился. Если дочерних процессов нет, то getAnyProcessStatus генерирует исключение isDoesNotExistError.
Если blk равно False, то WNOHANG устанавливается в параметрах для waitpid, в противном случае — нет. Если stopped равно True, то WUNTRACED устанавливается в параметрах для waitpid, в противном случае — нет.
getGroupProcessStatus :: Bool -> Bool -> ProcessGroupID -> IO (Maybe (ProcessID, ProcessStatus)) Source
getGroupProcessStatus blk stopped pgid вызывает waitpid, возвращая Just (pid, tc), идентификатор ProcessID и состояние ProcessStatus любого процесса в группе pgid, если он доступен, или Nothing, если есть дочерние процессы, но ни один из них не завершился. Если дочерних процессов нет, то getGroupProcessStatus генерирует исключение isDoesNotExistError.
Если blk равно False, то WNOHANG устанавливается в параметрах для waitpid, в противном случае — нет. Если stopped равно True, то WUNTRACED устанавливается в параметрах для waitpid, в противном случае — нет.
Устаревшие
createProcessGroup :: ProcessID -> IO ProcessGroupID Source
Устарело: эта функция запланирована к замене на другую в будущем. Рекомендуется использовать createProcessGroupFor.
createProcessGroup pid вызывает setpgid для того, чтобы сделать процесс pid лидером новой группы процессов. Данная функция устарела и может быть изменена на назначение текущего процесса лидером новой группы процессов в будущих версиях.
setProcessGroupID :: ProcessID -> ProcessGroupID -> IO () Source
Устарело: эта функция запланирована к замене на другую в будущем. Рекомендуется использовать setProcessGroupIDOf.
setProcessGroupID pid pgid вызывает setpgid для установки ProcessGroupID для процесса pid на pgid. Данная функция устарела и может быть изменена на установку ProcessGroupID для текущего процесса в будущих версиях.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/unix-2.7.1.0/System-Posix-Process-ByteString.html