Como usar o sistema de pesquisa chamado em c

Como usar o sistema de pesquisa chamado em c
O recurso Poll () permite que os programas de entrada e saída multiplex através de uma série de descritores de arquivos. Em outras palavras, a chamada do sistema Poll () é análoga para selecionar () Sistema Call in Working, pois mantém seu fogo para um dos vários descritores de arquivos, tornando -se disponível para E/S. Poll () examina o descritor de documentos atribuído para listar o (s) evento (s) em incidentes a todos os elementos da matriz apontando para ele por descritores de arquivo. O método Poll () pode determinar qual dos descritores de arquivo um programa lerá ou escreverá detalhes, que viram esses incidentes. Neste guia, usaremos o Ubuntu 20.04 Para entender o conceito de Poll () System Call On Linux passo a passo.

Sintaxe:

Int Poll (Struct POLLFD *UFDS, INT NFDS não assinado, int timeout);

O argumento "FDS" determina os descritores do documento a serem verificados, bem como os incidentes de significância para cada. É uma referência a uma matriz que tem um elemento para cada descritor de documentos abertos. Os elementos da matriz são estruturas POLLFD, onde o FD indica um descritor de documentos abertos, e todos os acontecimentos e reevents, geralmente chamados de máscaras de bits, são gerados pela criação de uma amalgamação dos sinalizadores de eventos correspondentes:

Pollin:

Além dos dados de alta prioridade, os dados da informação podem ser lidos privados de serem bloqueados. Além disso, se a mensagem de resposta for de tamanhos zero, esse sinal de sinalização será gerado para os fluxos em Reventes. Esta bandeira tem o mesmo significado que PollrdNorm | PollrdBand.

PollrdNorm:

Sem interrupção, os dados de informações comuns podem ser leitura. Informações sobre a banda de preocupação de prioridade primária 0 podem ser lidas, apesar da interrupção para fluxos. E se a mensagem de resposta for de comprimento zero, esse sinal será gerado em reevents.

PollrdBand:

Os dados principais de preocupação serão lidos, apesar de causar atrasos. Informações sobre faixas prioritárias maiores que zero podem ser lidas, apesar de interferir em fluxos. E se a resposta da mensagem for de duração zero, esse sinal será propagado em concursos.

Pollpri:

Pode haver algumas exceções ao descritor do documento. Informações com uma prioridade máxima podem ser lidas privadas de serem bloqueadas. Além disso, se a resposta for zero de duração, esse sinal será propagado para fluxos em concursos.

POLLILT:

Os usuários podem escrever usando a bandeira da pollout. Privado de parar, dados típicos podem ser registrados. Informações sobre a banda de preferência 0 podem ser gravadas apesar da interrupção em fluxos.

PollWrnorm:

Funciona da mesma forma que a pesquisa.

PollWrband:

Os dados mais prioritários serão escritos usando esta bandeira. Informações sobre variações de preferência maiores que zero para fluxos podem ser registradas sem serem bloqueadas. Esta atividade avalia apenas bandas que já foram escritas no mínimo uma vez, uma vez que nenhuma banda de preferência foi escrita neste fluxo.

Poller:

É uma condição de erro e só ocorre quando o sistema ou fluxo encontrou um problema. Este símbolo se aplica apenas à máscara de bits de Revents; Ao longo das atividades participantes, é esquecido.

PollHup:

Ele especifica a condição de suspensão e só ocorre quando a conexão com o sistema foi desativada. Essa ocorrência e policial são igualmente compatíveis; Depois que surgiu um problema, um fluxo nunca será escrito.

Pollnval:

Isso especifica o pedido inválido ou incomum. Essa atividade, no entanto, não exclui a participação em Pollin, PollrdNorm, PollrdBand ou Pollpri. Este símbolo se aplica apenas à máscara de bits de Revents; é esquecido no participante do evento.

Exemplo da chamada do sistema de pesquisa:

Ele desempenha o mesmo papel que selecion (), embora em uma escala maior. Poll () está disponível em qualquer máquina Linux baseada em GLIBC. Os grãos mais antigos imitam a pesquisa () com selecion () em toda a biblioteca C. No entanto, os programas não precisam fazer uma distinção. Aqui está um exemplo de como é a Poll (). Então abra o terminal da linha de comando primeiro usando a chave de atalho “ctrl+alt+t.”Depois de abri-lo, temos que criar um arquivo do tipo C para escrever um código do tipo C nele. Para isso, estamos usando o editor de nano. Então, experimente o comando nano abaixo no terminal junto com o nome do arquivo C.

$ nano novo.c

Agora, o editor de nano do arquivo C "novo" foi aberto. Você deve primeiro incluir algumas bibliotecas, especialmente a “enquete.Biblioteca H ”. A função principal foi especificada como tendo um tipo de retorno inteiro com dois argumentos em seu parâmetro, e.g., argc e argv. Em seguida, declaramos um descritor de arquivo FD e uma matriz do tipo de caractere chamada “BUF.”Depois disso, uma variável de tipo de estrutura foi definida chamada Pollfd PFDs de tamanho 2. Em seguida, uma chamada de sistema aberto foi declarada para obter o valor da matriz do tipo de caractere e atribuí -la ao descritor de arquivo "FD", como visto na imagem. Enquanto o descritor de arquivo é "1", a estrutura "PFDS" será atualizada com alguns dados usando a bandeira da Pollin nele. Agora definimos uma função de chamada do sistema Poll (). O primeiro parâmetro da chamada do sistema Poll () é a estrutura UFDS usada no código. O segundo parâmetro especifica o total de estruturas POLLFD na série FDS.

E o último parâmetro está mostrando o valor do tempo limite do tipo inteiro para a chamada do sistema de pesquisa. Se os PFDs forem arrecatados e adicionados com um valor 0, a chamada do sistema de leitura lerá os dados do buffer. A instrução "se" será usada para verificar se a instrução de leitura retornou seu valor a um número inteiro e gravar dados. Se a estrutura “PFDS” estiver na posição “1” enquanto rejeita e inserindo os dados, a chamada do sistema de leitura usará os dados de um buffer enquanto usará o descritor “FD”.

Salve o novo.Arquivo C e feche -o. Agora compile usando o compilador GCC.

$ gcc novo.c

Ao executar esse código, adicionamos dados em uma enquete a ser lida e ele escreve dados novamente como na saída abaixo.

$ ./a.fora

Conclusão:

Neste artigo acima descrito, discutimos o sistema Poll () System no idioma C. Espero que você ache este tutorial útil e eficiente enquanto trabalha no sistema operacional Linux.