System.Posix.Process
| 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 дочернего процесса родительскому процессу; в случае ошибки возникает исключение.
Состояние маскирования исключений выполняемого действия наследуется (сравните 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
Аргументы
| :: FilePath | Команда |
| -> Bool | Поиск в PATH? |
| -> [String] | Аргументы |
| -> Maybe [(String, String)] | Среда |
| -> 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.html