Уничтожить связь между путем и администратором ресурса
#include <sys/iofunc.h>#include <sys/dispatch.h>int resmgr_detach( dispatch_t *dpp,int id,unsigned flags );
<sys/dispatch.h>
и <sys/resmgr.h>
): libc
Функция resmgr_detach() удаляет имя пути id из пространства имен контекста dpp.
Функция resmgr_detach() блокируется до тех пор, пока RESMGR_HANDLE_T
, переданная в соответствующую resmgr_attach(), не используется в любой функции установки соединения.
Эффект, который это оказывает на серверы, минимален. Необходимо соблюдать следующие меры предосторожности, чтобы предотвратить возможные взаимные блокировки:
RESMGR_HANDLE_T
в качестве атрибута, если этот атрибут заблокирован на любой функции установке соединения (таких как open, unlink, mount, и т.д.), то следует разблокировать его перед вызовом resmgr_detach(). Это позволяет завершить выполнение любых ожидающих запросов на соединение до того, как они будут впоследствии признаны недействительными.
При вызове resmgr_detach() из функции установки соединения, внутренний счетчик учитывает это, и сервер не блокируется. |
-1
и errno, установленным в ENOENT
, чтобы указать, что процесс отсоединения уже начался, и запись теперь недействительна. При динамическом выделении памяти освобждать ресурсы RESMGR_HANDLE_T
нужно только после успешного возврата из resmgr_detach().
EBADF
, когда он использует fd, связанный с этим соединением.
#include <sys/dispatch.h>#include <stdio.h>#include <stdlib.h>int main( int argc, char **argv ){dispatch_t *dpp;int id;if ( (dpp = dispatch_create()) == NULL ){fprintf( stderr, "%s: Unable to allocate dispatch handle.\n", argv[0] );return (EXIT_FAILURE);}id = resmgr_attach( ... );...if ( resmgr_detach( dpp, id, 0 ) == -1 ){fprintf( stderr, "Failed to remove pathname from the pathname space.\n" );return (EXIT_FAILURE);}}
Другие примеры, использующие интерфейс диспетчера см. на страницах dispatch_create(), message_attach(), resmgr_attach(), и thread_pool_create().
ЗОСРВ «Нейтрино»
dispatch_create(), resmgr_attach()
Предыдущий раздел: Описание API системной библиотеки