Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы CoreFoundation ссылка CFFileDescriptor

Опции
Развертывание Target:

На этой странице
Язык:

Ссылка CFFileDescriptor

CFFileDescriptor обеспечивает непрозрачный тип для контроля дескрипторов файлов для чтения и действия записи через CFRunLoop.

Вы используете CFFileDescriptor для контроля дескрипторов файлов для чтения и действия записи через CFRunLoop с помощью обратных вызовов. Каждый перезванивает, один выстрел и должен быть повторно включен, если Вы хотите получить другой.

Можно повторно включить обратный вызов в самой функции обратного вызова, но необходимо полностью обслужить дескриптор файла прежде, чем сделать так. Например, если Вы создадите CFFileDescriptor для канала и получите обратный вызов, потому что существуют байты, которые будут считаны, тогда если Вы не считаете все байты, но тем не менее повторно включите CFFileDescriptor для действия чтения, то Вы будете призваны обратно снова сразу.

Можно контролировать kqueue дескрипторы файлов для действия чтения для обнаружения, когда событие, для которого фильтрует kqueue, имело место. Вы ответственны за понимание использования kevent () API и вставка и удаление фильтров от kqueue дескриптора файла сами.

Следующий пример берет процесс UNIX ID в качестве параметра, и наблюдает до 20 секунд и сообщает, завершается ли процесс в то время:

  • // cc test.c -framework CoreFoundation -O
  • #include <CoreFoundation/CoreFoundation.h>
  • #include <unistd.h>
  • #include <sys/event.h>
  • static void noteProcDeath(CFFileDescriptorRef fdref, CFOptionFlags callBackTypes, void *info) {
  • struct kevent kev;
  • int fd = CFFileDescriptorGetNativeDescriptor(fdref);
  • kevent(fd, NULL, 0, &kev, 1, NULL);
  • // take action on death of process here
  • printf("process with pid '%u' died\n", (unsigned int)kev.ident);
  • CFFileDescriptorInvalidate(fdref);
  • CFRelease(fdref); // the CFFileDescriptorRef is no longer of any use in this example
  • }
  • // one argument, an integer pid to watch, required
  • int main(int argc, char *argv[]) {
  • if (argc < 2) exit(1);
  • int fd = kqueue();
  • struct kevent kev;
  • EV_SET(&kev, atoi(argv[1]), EVFILT_PROC, EV_ADD|EV_ENABLE, NOTE_EXIT, 0, NULL);
  • kevent(fd, &kev, 1, NULL, 0, NULL);
  • CFFileDescriptorRef fdref = CFFileDescriptorCreate(kCFAllocatorDefault, fd, true, noteProcDeath, NULL);
  • CFFileDescriptorEnableCallBacks(fdref, kCFFileDescriptorReadCallBack);
  • CFRunLoopSourceRef source = CFFileDescriptorCreateRunLoopSource(kCFAllocatorDefault, fdref, 0);
  • CFRunLoopAddSource(CFRunLoopGetMain(), source, kCFRunLoopDefaultMode);
  • CFRelease(source);
  • // run the run loop for 20 seconds
  • CFRunLoopRunInMode(kCFRunLoopDefaultMode, 20.0, false);
  • return 0;
  • }

Функции

  • Создает новый CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorCreate(_ allocator: CFAllocator!, _ fd: CFFileDescriptorNativeDescriptor, _ closeOnInvalidate: Boolean, _ callout: CFFileDescriptorCallBack, _ context: UnsafePointer<CFFileDescriptorContext>) -> CFFileDescriptor!

    Objective C

    CFFileDescriptorRef CFFileDescriptorCreate ( CFAllocatorRef allocator, CFFileDescriptorNativeDescriptor fd, Boolean closeOnInvalidate, CFFileDescriptorCallBack callout, const CFFileDescriptorContext *context );

    Параметры

    allocator

    Средство выделения для использования для выделения памяти для нового объекта дескриптора файла. Передача NULL или kCFAllocatorDefault использовать текущее средство выделения по умолчанию.

    fd

    Дескриптор файла для нового CFFileDescriptor.

    closeOnInvalidate

    true если должен закрыться новый CFFileDescriptor fd когда это лишено законной силы, иначе false.

    callout

    CFFileDescriptorCallBack для нового CFFileDescriptor.

    context

    Контекстная информация для нового CFFileDescriptor.

    Возвращаемое значение

    Новый CFFileDescriptor или NULL если была проблема, создающая объект. Владение соблюдает Создать Правило.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает собственный дескриптор файла для данного CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorGetNativeDescriptor(_ f: CFFileDescriptor!) -> CFFileDescriptorNativeDescriptor

    Objective C

    CFFileDescriptorNativeDescriptor CFFileDescriptorGetNativeDescriptor ( CFFileDescriptorRef f );

    Параметры

    f

    CFFileDescriptor.

    Возвращаемое значение

    Собственный дескриптор файла для f.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    CFFileDescriptorInvalidate

  • Возвращает булево значение, указывающее, допустим ли собственный дескриптор файла для данного CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorIsValid(_ f: CFFileDescriptor!) -> Boolean

    Objective C

    Boolean CFFileDescriptorIsValid ( CFFileDescriptorRef f );

    Параметры

    f

    CFFileDescriptor.

    Возвращаемое значение

    true если собственный дескриптор файла для f допустимо, иначе false.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    CFFileDescriptorInvalidate

  • Получает контекст для данного CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorGetContext(_ f: CFFileDescriptor!, _ context: UnsafeMutablePointer<CFFileDescriptorContext>)

    Objective C

    void CFFileDescriptorGetContext ( CFFileDescriptorRef f, CFFileDescriptorContext *context );

    Параметры

    f

    CFFileDescriptor.

    context

    По возврату, содержит контекст, переданный f в CFFileDescriptorCreate.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

    См. также

    CFFileDescriptorCreate

  • Лишает законной силы объект CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorInvalidate(_ f: CFFileDescriptor!)

    Objective C

    void CFFileDescriptorInvalidate ( CFFileDescriptorRef f );

    Параметры

    f

    CFFileDescriptor.

    Обсуждение

    После того, как лишенный законной силы, объект CFFileDescriptor больше не будет читаться из или писаться в на Базовом уровне Fundation.

    Если Вы передали true для closeOnInvalidate параметр, когда Вы вызвали CFFileDescriptorCreate, эта функция также закрывает базовый дескриптор файла. Если Вы передали false, необходимо закрыть дескриптор сами после лишения законной силы объекта CFFileDescriptor.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Создает новый runloop источник для данного CFFileDescriptor.

    Объявление

    Swift

    func CFFileDescriptorCreateRunLoopSource(_ allocator: CFAllocator!, _ f: CFFileDescriptor!, _ order: CFIndex) -> CFRunLoopSource!

    Objective C

    CFRunLoopSourceRef CFFileDescriptorCreateRunLoopSource ( CFAllocatorRef allocator, CFFileDescriptorRef f, CFIndex order );

    Параметры

    allocator

    Средство выделения для использования для выделения памяти для новой сумки и ее хранения для значений. Передача NULL или kCFAllocatorDefault использовать текущее средство выделения по умолчанию.

    f

    CFFileDescriptor.

    order

    Порядок на новый цикл выполнения (см. CFRunLoopSourceCreate).

    Возвращаемое значение

    Новый runloop источник для f, или NULL если была проблема, создающая объект. Владение соблюдает Создать Правило.

    Обсуждение

    Контекст для нового runloop (см. CFRunLoopSourceCreate) совпадает с контекстом, переданным в том, когда CFFileDescriptor создавался (см. CFFileDescriptorCreate).

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Возвращает идентификатор типа для CFFileDescriptor непрозрачный тип.

    Объявление

    Swift

    func CFFileDescriptorGetTypeID() -> CFTypeID

    Objective C

    CFTypeID CFFileDescriptorGetTypeID ( void );

    Возвращаемое значение

    Идентификатор типа для CFFileDescriptor непрозрачный тип.

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

Типы данных

  • Определяет тип для собственного дескриптора файла.

    Объявление

    Swift

    typealias CFFileDescriptorNativeDescriptor = Int32

    Objective C

    typedef int CFFileDescriptorNativeDescriptor;

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Определяет структуру для обратного вызова для CFFileDescriptor.

    Объявление

    Swift

    typealias CFFileDescriptorCallBack = CFunctionPointer<((CFFileDescriptor!, CFOptionFlags, UnsafeMutablePointer<Void>) -> Void)>

    Objective C

    typedef void (*CFFileDescriptorCallBack) ( CFFileDescriptorRef f, CFOptionFlags callBackTypes, void *info );

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Определяет структуру для контекста CFFileDescriptor.

    Объявление

    Swift

    struct CFFileDescriptorContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>)> var release: CFunctionPointer<((UnsafeMutablePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafeMutablePointer<Void>) -> Unmanaged<CFString>!)> }

    Objective C

    typedef struct { CFIndex version; void * info; void * (*retain)(void *info); void (*release)(void *info); CFStringRef (*copyDescription)(void *info); } CFFileDescriptorContext;

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

  • Ссылка на объект CFFileDescriptor.

    Объявление

    Swift

    typealias CFFileDescriptorRef = CFFileDescriptor

    Objective C

    typedef struct __CFFileDescriptor * CFFileDescriptorRef;

    Оператор импорта

    Objective C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Доступность

    Доступный в OS X v10.5 и позже.

Константы

  • Константы, идентифицирующие обратные вызовы записи и чтение.

    Объявление

    Swift

    var kCFFileDescriptorReadCallBack: Int { get } var kCFFileDescriptorWriteCallBack: Int { get }

    Objective C

    enum { kCFFileDescriptorReadCallBack = 1 << 0, kCFFileDescriptorWriteCallBack = 1 << 1 };

    Константы

    • kCFFileDescriptorReadCallBack

      kCFFileDescriptorReadCallBack

      Идентифицирует обратный вызов чтения.

      Доступный в OS X v10.5 и позже.

    • kCFFileDescriptorWriteCallBack

      kCFFileDescriptorWriteCallBack

      Идентифицирует обратный вызов записи.

      Доступный в OS X v10.5 и позже.