NSTask
Используя NSTask класс, Ваша программа может выполнить другую программу как подпроцесс и может контролировать выполнение той программы. NSTask объект создает отдельный исполнимый объект; это отличается от NSThread в этом это не совместно использует пространство памяти с процессом, создающим его.
Задача работает в среде, определенной текущей стоимостью для нескольких элементов: текущий каталог, стандартный ввод, стандартный вывод, стандартная погрешность и значения любых переменных окружения. По умолчанию, NSTask объект наследовал свою среду от процесса, запускающего его. Если существуют какие-либо значения, которые должны отличаться для задачи, например, если текущий каталог должен измениться, необходимо изменить значение перед запуском задачи. Среда задачи не может быть изменена, в то время как она работает.
NSTask один раз может только быть выполнен объект. Последующие попытки выполнить задачу повышают ошибку.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.0 и позже.
-
Создает и запускает задачу с указанной исполнимой программой и параметрами.
Объявление
Параметры
pathПуть к исполнимой программе.
argumentsМассив
NSStringобъекты, который предоставляет параметры задаче. Еслиargumentsnil,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: StringObjective 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: AnyObjectObjective C
@property(retain) id standardErrorВозвращаемое значение
Файл стандартной погрешности используется получателем.
Обсуждение
Стандартная погрешность - то, куда отправляются все сообщения диагностики. Объект возвратился, любой
NSFileHandleилиNSPipeэкземпляр, в зависимости от того, какой объект был переданsetStandardError:.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает стандартный входной файл, используемый получателем.
Объявление
Swift
var standardInput: AnyObjectObjective C
@property(retain) id standardInputВозвращаемое значение
Стандартный входной файл используется получателем.
Обсуждение
Стандартный ввод состоит в том, где получатель берет свой ввод от если не указано иное. Объект возвратился, любой
NSFileHandleилиNSPipeэкземпляр, в зависимости от того, какой объект был переданsetStandardInput:метод.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Возвращает файл стандартного вывода, используемый получателем.
Объявление
Swift
var standardOutput: AnyObjectObjective 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() -> BoolObjective C
- (BOOL)resumeВозвращаемое значение
YEStrueесли получатель смог возобновить выполнение,NOfalseиначе.Обсуждение
Если многократный
suspendсообщения были отправлены в получатель, равное количествоresumeсообщения должны быть отправлены перед выполнением резюме задачи.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
-
Приостанавливает выполнение задачи получателя.
Объявление
Swift
func suspend() -> BoolObjective C
- (BOOL)suspendВозвращаемое значение
YEStrueесли получатель был успешно приостановлен,NOfalseиначе.Обсуждение
Многократный
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.");elseNSLog(@"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Возвращаемое значение
YEStrueесли получатель все еще работает, иначеNOfalse.NOfalseсредние значения или получатель не могли работать, или он завершился.Оператор импорта
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.");elseNSLog(@"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объекты, который предоставляет параметры задаче. Еслиargumentsnil,NSInvalidArgumentExceptionповышен.Обсуждение
NSTaskобъект преобразовывает обоихpathи строки вargumentsк надлежащим строкам C-стиля (использованиеfileSystemRepresentation) прежде, чем передать их задаче черезargv[]. Строки вargumentsне подвергайтесь расширению оболочки, таким образом, Вы не должны делать специального заключения в кавычки и переменных оболочки, такой как$PWD, не разрешены.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает текущий каталог для получателя.
Объявление
Swift
var currentDirectoryPath: StringObjective 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: AnyObjectObjective C
@property(retain) id standardErrorПараметры
fileСтандартная погрешность для получателя, который может быть любой
NSFileHandleилиNSPipeобъект.Обсуждение
Если
fileNSPipeобъект, запуская получатель автоматически закрывает конец записи канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец записи канала не будет закрыт автоматически.Если этот метод не используется, стандартная погрешность наследована от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentExceptionесли был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает стандартный ввод для получателя.
Объявление
Swift
var standardInput: AnyObjectObjective C
@property(retain) id standardInputПараметры
fileСтандартный ввод для получателя, который может быть любой
NSFileHandleилиNSPipeобъект.Обсуждение
Если
fileNSPipeобъект, запуская получатель автоматически закрывает конец чтения канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец чтения канала не будет закрыт автоматически.Если этот метод не используется, стандартный ввод наследован от процесса, создавшего получатель. Этот метод повышает
NSInvalidArgumentExceptionесли был уже запущен получатель.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.0 и позже.
См. также
-
Устанавливает стандартный вывод для получателя.
Объявление
Swift
var standardOutput: AnyObjectObjective C
@property(retain) id standardOutputПараметры
fileСтандартный вывод для получателя, который может быть любой
NSFileHandleилиNSPipeобъект.Обсуждение
Если
fileNSPipeобъект, запуская получатель автоматически закрывает конец записи канала в текущей задаче. Не создавайте дескриптор для канала и передачи, что, поскольку параметр или конец записи канала не будет закрыт автоматически.Если этот метод не используется, стандартный вывод наследован от процесса, создавшего получатель. Этот метод повышает
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;Константы
-
ExitNSTaskTerminationReasonExitЗадача обычно выходила.
Доступный в OS X v10.6 и позже.
-
UncaughtSignalNSTaskTerminationReasonUncaughtSignalЗадача вышла вследствие непойманного сигнала.
Доступный в 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 и позже.
