Spec-Zone.ru › Haskell 7

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

executeFile Source

Аргументы

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

Поля

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-ByteString.html

Spec-Zone.ru

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