Spec-Zone.ru › Haskell 7

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

executeFile Source

Аргументы

:: 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

Поля

elapsedTime :: ClockTick
userTime :: ClockTick
systemTime :: ClockTick
childUserTime :: ClockTick
childSystemTime :: ClockTick

getProcessTimes :: IO ProcessTimes Source

getProcessTimes вызывает times для получения информации об учёте времени для текущего процесса и его дочерних процессов.

Приоритет планирования

nice :: Int -> IO () Source

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

процесс завершился вызовом exit() или возвратом из main

Terminated Signal Bool

процесс был завершен сигналом, Bool равно True, если был создан дамп ядра

С версии: 2.7.0.0

Stopped Signal

процесс был остановлен сигналом

Реализации

Eq ProcessStatus
Ord ProcessStatus
Show ProcessStatus

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API