NSTask
Используя NSTask
класс, Ваша программа может выполнить другую программу как подпроцесс и может контролировать выполнение той программы. NSTask
объект создает отдельный исполнимый объект; это отличается от NSThread
в этом это не совместно использует пространство памяти с процессом, создающим его.
Задача работает в среде, определенной текущей стоимостью для нескольких элементов: текущий каталог, стандартный ввод, стандартный вывод, стандартная погрешность и значения любых переменных окружения. По умолчанию, NSTask
объект наследовал свою среду от процесса, запускающего его. Если существуют какие-либо значения, которые должны отличаться для задачи, например, если текущий каталог должен измениться, необходимо изменить значение перед запуском задачи. Среда задачи не может быть изменена, в то время как она работает.
NSTask
один раз может только быть выполнен объект. Последующие попытки выполнить задачу повышают ошибку.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Создает и запускает задачу с указанной исполнимой программой и параметрами.
Объявление
Параметры
path
Путь к исполнимой программе.
arguments
Массив
NSString
объекты, который предоставляет параметры задаче. Еслиarguments
nil
,NSInvalidArgumentException
повышен.Обсуждение
Задача наследовала свою среду от процесса, вызывающего этот метод.
NSTask
объект преобразовывает обоихpath
и строки вarguments
к надлежащим строкам C-стиля (использованиеfileSystemRepresentation
) прежде, чем передать их задаче черезargv[])
. Строки вarguments
не подвергайтесь расширению оболочки, таким образом, Вы не должны делать специального заключения в кавычки и переменных оболочки, такой как$PWD
, не разрешены.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает инициализированный
NSTask
объект со средой текущего процесса.Объявление
Swift
init()
Objective C
- (instancetype)init
Возвращаемое значение
Инициализированный
NSTask
объект со средой текущего процесса.Обсуждение
Если необходимо изменить среду задачи, используйте выделение и init, и затем установите среду прежде, чем запустить новую задачу. Иначе, просто используйте метод класса
launchedTaskWithLaunchPath:arguments:
создать и выполнить задачу.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Когда получатель был запущен, возвращает параметры, используемые.
Объявление
Swift
var arguments: [AnyObject]
Objective C
@property(copy) NSArray *arguments
Возвращаемое значение
Массив
NSString
когда получатель был запущен, объекты, содержащие параметры, использовали.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает текущий каталог задачи.
Объявление
Swift
var currentDirectoryPath: String
Objective C
@property(copy) NSString *currentDirectoryPath
Возвращаемое значение
Текущий рабочий каталог задачи.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает словарь переменных для среды, от которой был запущен получатель.
Объявление
Swift
var environment: [NSObject : AnyObject]
Objective C
@property(copy) NSDictionary *environment
Возвращаемое значение
Словарь переменных для среды, от которой был запущен получатель. Ключи словаря являются именами переменной окружения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
– setEnvironment:
environment
(NSProcessInfo) -
Возвращает путь исполнимой программы получателя.
Возвращаемое значение
Путь исполнимой программы получателя.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор процесса получателя.
Объявление
Swift
var processIdentifier: Int32 { get }
Objective C
@property(readonly) int processIdentifier
Возвращаемое значение
Идентификатор процесса получателя.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает файл стандартной погрешности, используемый получателем.
Объявление
Swift
var standardError: AnyObject
Objective C
@property(retain) id standardError
Возвращаемое значение
Файл стандартной погрешности используется получателем.
Обсуждение
Стандартная погрешность - то, куда отправляются все сообщения диагностики. Объект возвратился, любой
NSFileHandle
илиNSPipe
экземпляр, в зависимости от того, какой объект был переданsetStandardError:
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает стандартный входной файл, используемый получателем.
Объявление
Swift
var standardInput: AnyObject
Objective C
@property(retain) id standardInput
Возвращаемое значение
Стандартный входной файл используется получателем.
Обсуждение
Стандартный ввод состоит в том, где получатель берет свой ввод от если не указано иное. Объект возвратился, любой
NSFileHandle
илиNSPipe
экземпляр, в зависимости от того, какой объект был переданsetStandardInput:
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает файл стандартного вывода, используемый получателем.
Объявление
Swift
var standardOutput: AnyObject
Objective C
@property(retain) id standardOutput
Возвращаемое значение
Файл стандартного вывода используется получателем.
Обсуждение
Стандартный вывод - то, где получатель выводит на экран свой вывод. Объект возвратился, любой
NSFileHandle
илиNSPipe
экземпляр, в зависимости от того, какой объект был переданsetStandardOutput:
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Отправляет сигнал прерывания в получатель и все его подзадачи.
Объявление
Swift
func interrupt()
Objective C
- (void)interrupt
Обсуждение
Если задача завершается в результате, который является поведением по умолчанию,
NSTaskDidTerminateNotification
отправляется центру уведомления по умолчанию. Если получатель был уже запущен и уже закончил выполняться, этот метод не имеет никакого эффекта. Если получатель еще не был запущен, этот метод повышаетNSInvalidArgumentException
.Не всегда возможно прервать получатель, потому что это могло бы игнорировать сигнал прерывания.
interrupt
отправляетSIGINT
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Запускает задачу, представленную получателем.
Объявление
Swift
func launch()
Objective C
- (void)launch
Обсуждение
Повышения
NSInvalidArgumentException
если путь запуска не был установлен или недопустим или если ему не удается создать процесс.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Выполнение резюме задачи получателя, ранее приостановленной с a
suspend
сообщение.Объявление
Swift
func resume() -> Bool
Objective C
- (BOOL)resume
Возвращаемое значение
YES
true
если получатель смог возобновить выполнение,NO
false
иначе.Обсуждение
Если многократный
suspend
сообщения были отправлены в получатель, равное количествоresume
сообщения должны быть отправлены перед выполнением резюме задачи.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Приостанавливает выполнение задачи получателя.
Объявление
Swift
func suspend() -> Bool
Objective C
- (BOOL)suspend
Возвращаемое значение
YES
true
если получатель был успешно приостановлен,NO
false
иначе.Обсуждение
Многократный
suspend
сообщения могут быть отправлены, но они должны быть сбалансированы с равного количестваresume
сообщения перед задачей возобновляют выполнение.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Отправляет оконечный сигнал в получатель и все его подзадачи.
Объявление
Swift
func terminate()
Objective C
- (void)terminate
Обсуждение
Если задача завершается в результате, который является поведением по умолчанию,
NSTaskDidTerminateNotification
отправляется центру уведомления по умолчанию. Если получатель был уже запущен и уже закончил выполняться, этот метод не имеет никакого эффекта. Если получатель еще не был запущен, этот метод повышаетNSInvalidArgumentException
.Не всегда возможно завершить получатель, потому что это могло бы игнорировать оконечный сигнал.
terminate
отправляетSIGTERM
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
-
Блок, пока не закончен получатель.
Объявление
Swift
func waitUntilExit()
Objective C
- (void)waitUntilExit
Обсуждение
Этот метод сначала проверяет, чтобы видеть, выполняет ли получатель все еще использование
isRunning
. Тогда это опрашивает текущее использование цикла выполненияNSDefaultRunLoopMode
пока задача не завершается.[aTask launch];
[aTask waitUntilExit];
int status = [aTask terminationStatus];
if (status == ATASK_SUCCESS_VALUE)
NSLog(@"Task succeeded.");
else
NSLog(@"Task failed.");
waitUntilExit
не гарантирует чтоterminationHandler
блок был полностью выполнен преждеwaitUntilExit
возвраты.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
isRunning - isRunning
Доступный в OS X v10.0 через OS X v10.9Возвраты, работает ли все еще получатель.
Объявление
Objective C
- (BOOL)isRunning
Возвращаемое значение
YES
true
если получатель все еще работает, иначеNO
false
.NO
false
средние значения или получатель не могли работать, или он завершился.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 через OS X v10.9.
См. также
-
Возвращает статус выхода, возвращенный исполнимой программой получателя.
Объявление
Swift
var terminationStatus: Int32 { get }
Objective C
@property(readonly) int terminationStatus
Возвращаемое значение
Статус выхода, возвращенный исполнимой программой получателя.
Обсуждение
Каждая задача определяет и документы, как должно быть интерпретировано ее возвращаемое значение. Например, много команд возвращаются 0, если они завершаются успешно или код ошибки, если они не делают. Необходимо будет смотреть на документацию для той задачи изучить то, что оценивает его возвраты при каких обстоятельствах.
Этот метод повышает
NSInvalidArgumentException
если все еще работает получатель. Проверьте, что получатель не работает перед использованием его.if (![aTask isRunning]) {
int status = [aTask terminationStatus];
if (status == ATASK_SUCCESS_VALUE)
NSLog(@"Task succeeded.");
else
NSLog(@"Task failed.");
}
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает причину, задача была завершена.
Объявление
Swift
var terminationReason: NSTaskTerminationReason { get }
Objective C
@property(readonly) NSTaskTerminationReason terminationReason
Возвращаемое значение
Состояние завершения. Возможные значения описаны в НСТЭСКТЕРМИНЭЙШНРИСОНЕ.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
Устанавливает аргументы команды, которые должны использоваться для запуска исполнимой программы.
Объявление
Swift
var arguments: [AnyObject]
Objective C
@property(copy) NSArray *arguments
Параметры
arguments
Массив
NSString
объекты, который предоставляет параметры задаче. Еслиarguments
nil
,NSInvalidArgumentException
повышен.Обсуждение
NSTask
объект преобразовывает обоихpath
и строки вarguments
к надлежащим строкам C-стиля (использованиеfileSystemRepresentation
) прежде, чем передать их задаче черезargv[]
. Строки вarguments
не подвергайтесь расширению оболочки, таким образом, Вы не должны делать специального заключения в кавычки и переменных оболочки, такой как$PWD
, не разрешены.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает текущий каталог для получателя.
Объявление
Swift
var currentDirectoryPath: String
Objective C
@property(copy) NSString *currentDirectoryPath
Параметры
path
Текущий каталог для задачи.
Обсуждение
Если этот метод не используется, текущий каталог наследован от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentException
если был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает среду для получателя.
Объявление
Swift
var environment: [NSObject : AnyObject]
Objective C
@property(copy) NSDictionary *environment
Параметры
environmentDictionary
Словарь переменной окружения оценивает, чьи ключи являются именами переменной.
Обсуждение
Если этот метод не используется, среда наследована от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentException
если был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает исполнимую программу получателя.
Параметры
path
Путь к исполнимой программе.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает стандартную погрешность для получателя.
Объявление
Swift
var standardError: AnyObject
Objective C
@property(retain) id standardError
Параметры
file
Стандартная погрешность для получателя, который может быть любой
NSFileHandle
илиNSPipe
объект.Обсуждение
Если
file
NSPipe
объект, запуская получатель автоматически закрывает конец записи канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец записи канала не будет закрыт автоматически.Если этот метод не используется, стандартная погрешность наследована от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentException
если был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает стандартный ввод для получателя.
Объявление
Swift
var standardInput: AnyObject
Objective C
@property(retain) id standardInput
Параметры
file
Стандартный ввод для получателя, который может быть любой
NSFileHandle
илиNSPipe
объект.Обсуждение
Если
file
NSPipe
объект, запуская получатель автоматически закрывает конец чтения канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец чтения канала не будет закрыт автоматически.Если этот метод не используется, стандартный ввод наследован от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentException
если был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает стандартный вывод для получателя.
Объявление
Swift
var standardOutput: AnyObject
Objective C
@property(retain) id standardOutput
Параметры
file
Стандартный вывод для получателя, который может быть любой
NSFileHandle
илиNSPipe
объект.Обсуждение
Если
file
NSPipe
объект, запуская получатель автоматически закрывает конец записи канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец записи канала не будет закрыт автоматически.Если этот метод не используется, стандартный вывод наследован от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentException
если был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.
См. также
-
terminationHandler terminationHandler
СвойствоВызванный, когда выполнена задача.
Объявление
Swift
var terminationHandler: ((NSTask!) -> Void)?
Objective C
@property(copy) void (^terminationHandler)( NSTask *)
Обсуждение
Когда задача завершилась, блок завершения вызывается. Объект задачи передается блоку, чтобы предоставить доступ к параметрам задачи, например определить, завершилась ли задача успешно.
Этот блок, как гарантируют, не будет полностью выполнен до
waitUntilExit
возврат.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Эти константы указывают значения, возвращающиеся
terminationReason
.Объявление
Swift
enum NSTaskTerminationReason : Int { case Exit case UncaughtSignal }
Objective C
enum { NSTaskTerminationReasonExit = 1, NSTaskTerminationReasonUncaughtSignal = 2 }; typedef NSInteger NSTaskTerminationReason;
Константы
-
Exit
NSTaskTerminationReasonExit
Задача обычно выходила.
Доступный в OS X v10.6 и позже.
-
UncaughtSignal
NSTaskTerminationReasonUncaughtSignal
Задача вышла вследствие непойманного сигнала.
Доступный в OS X v10.6 и позже.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
-
-
Отправленный, когда задача остановила выполнение. Когда задача обычно выходила или в результате, это уведомление может быть отправлено или
terminate
быть отправленным вNSTask
объект. ЕслиNSTask
объект выпущен, однако, это уведомление не будет отправлено, поскольку порт, сообщение было бы переслано, был выпущен как часть выпуска задачи. Метод наблюдателя может использоватьterminationStatus
определить, почему умерла задача. Посмотрите Окончание NSTask для примера.Объект уведомления
NSTask
завершенный объект. Это уведомление не содержит auserInfo
словарь.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.0 и позже.