Sintaxe da função sem_open 3 c
# sem_open (const char *nome, int ofLag, modo longo não assinado, valor int não assinado);
Descrição da função sem_open ()
Um link é feito entre um semáforo definido e uma estrutura usando o método sem_open (). O local é obtido pelo uso da função sem_open () junto com o termo semáforo, que permite que o sistema se referam ao semáforo correspondente ao rótulo especificado. Até que o semáforo seja rescindido com sucesso por uma função SEM Close () ou qualquer outro método do EXEC, ele ainda pode ser usado pela função. A função Operação para Sem_open () determina se o semáforo é gerado ou apenas acessível, dependendo do parâmetro OFLAG. Os elementos da bandeira listados no seguinte podem ser configurados no parâmetro OFLAG:
Bandeira de o_creat:
Se um semáforo ainda não apresentaria, ele é estabelecido usando esta bandeira. O_creat não tem impacto se o semáforo estiver presente e especificado, exceto o que é mencionado no O_EXCL. Um semáforo rotulado é formado se usarmos a função sem_open (). Os 3º e 4º parâmetros para o atributo O_Creat são modos de modo de formato t, seu conteúdo e do tipo de dados não assinado inteiro.
Um valor aproximado dos dados é usado para construir o semáforo. Semáforos devem ter os valores iniciais maiores ou equivalentes ao valor SEM max. O ID de usuário eficiente do programa é atribuído como o ID exclusivo do semáforo. O ID padrão do computador ou o ID de grupo eficiente da estrutura é fornecido como o ID do grupo do semáforo.
Além dos configurados na máscara de inicialização de formato de arquivo do sistema, os bytes de autorização do semáforo são todos atribuídos ao valor do modo de argumento. O impacto é ambíguo sempre que os elementos em um modo, em vez dos sinalizadores de acesso ao arquivo, são fornecidos. Outras metodologias podem vincular -se ao semáforo, invocando a função sem_open () com um valor semelhante do título. Posteriormente, o semáforo denominado nome é formado pela função sem_open (), incluindo a bandeira O_Creat.
O_EXCL Flag:
Se o título de semáforo já existir, sem_open () se recusar se o O_EXCL e O_CREAT forem especificados. Em termos de outros métodos que invocam a função sem_open () com O_EXCL e O_CREAT definidos, a verificação para ver se o semáforo já ocorre e a formação do semáforo quando não está presente ou ambos são assíncronos.
O resultado é indefinível quando O_EXCL e O_CREAT são especificados. O impacto é indefinido se a variável OFLAG contiver sinalizadores além de O_Creat e O_EXCL. Uma string especificando um item de semáforo é a fonte do parâmetro de nome. Se o valor reside nos arquivos do sistema e estiver acessível aos métodos que usam os nomes de caminho como parâmetros não são fornecidos, o parâmetro de nome atende aos requisitos para a formação de um nome de caminho. O elemento inicial no nome é uma barra (/), e nenhum outro elemento no nome pode conter barras.
A mesma localização semáforo é fornecida para cada acesso consecutivo à função sem_open () que um método faz com que o valor de nome semelhante, desde que nenhum argumento para a função sem_unlink () fosse feito para tais semáforo. Links para as duplicatas semáforo geram resultados inconsistentes. Semáforos não identificados são empregados com o método sem_init ().
Valor de retorno
A função retorna a localização do semáforo após uma execução bem -sucedida. Caso contrário, isso deve ser atribuído Errno para identificar o erro e gerar os resultados do MEV falhado. O cabeçalho contém uma descrição para o termo sem falhou. Se o sem_open () falhar, ele sempre fornecerá o valor na forma de falha.
Exemplo de sem_open 3 C função no Ubuntu
Vamos ver como a função sem_open () funciona no Ubuntu. No início do programa, diferentes bibliotecas são importadas. Esses módulos são responsáveis por operar as diferentes funções. Em seguida, definimos o tamanho do buffer e o definimos como 10. Inicializamos um buffer variável e declaramos as diferentes outras variáveis. Na próxima etapa, inicializamos a variável do contador junto com esses dois construtores especificados. Aplicamos o loop e definimos a condição. Nós também utilizamos o loop while.
Verificamos se o valor da variável do contador é igual ao tamanho do buffer usando um loop de tempo. Mas se o valor do contador for menor que o tamanho do buffer, haverá um incremento no valor do contador. Além disso, usamos a função Sleep () para manter a saída por um tempo.
Utilizamos o construtor vazio do consumidor. Dentro disso, aplicamos o construtor da variável "var". Inicializamos a variável "item". Então, utilizamos um pouco de loop. Depois disso, usamos a declaração if para confirmar se o valor do contador é maior que 0 ou não. Se o valor da variável do contador for maior que 0, há um decréscimo no valor do contador.
Nesta fase do código, declaramos as várias variáveis. Agora, declaramos um construtor. Chamamos o método sem_open (). Ele contém quatro parâmetros diferentes. Para encerrar o programa, aplicamos a função pthread_exit ().
Recebemos esse tipo de saída após executar o código aéreo:
Conclusão
Neste editorial, conversamos sobre o uso da função sem_open 3 C no Ubuntu. Primeiro, vimos a sintaxe desta função. Então, descrevemos alguns recursos desta função. Depois de tudo isso, executamos um programa no Ubuntu que tem a função sem_open ().