Sistema SEMCTL Ligue para C

Sistema SEMCTL Ligue para C
O idioma C cria a chamada do sistema SEMCTL no sistema Linux. Esta chamada do sistema foi amplamente utilizada no sistema Linux para realizar os processos de controle especificados pelo shell do console em algum conjunto de semáforo específico. Os semáforos são conhecidos IPs amplamente usados ​​para dar acesso a processos para comunicação entre si. Semáforo pode ser uma variável com tipo de dados abstrato para o acesso ao controle de 1 recurso para muitos procedimentos. Portanto, a chamada do sistema SEMCTL foi usada aqui para controlar o conjunto de semáforo. Vamos começar se inscrevendo no sistema Linux.

Abra o aplicativo de console na área de pesquisa. Uma maneira alternativa rápida de abrir o console é via “Ctrl+Alt+T”.

Exemplo:

Crie um novo arquivo C na pasta doméstico do sistema Linux com a utilização do comando "Touch". Nomeamos este arquivo C como "SEMCTL.C ”. Você pode nomear como quiser. A consulta é a seguinte:

$ touch semctl.c

O editor do GNU Nano será usado para editar e abrir o arquivo. Então, a consulta declarada abaixo foi usada para abrir o “SEMCTL.Arquivo C ”.

$ nano semctl.c

Como mostrado na imagem abaixo de que o arquivo já foi aberto no editor. Escreva o mesmo código em seu arquivo para ver o funcionamento da chamada do sistema "SEMCTL ()". O arquivo de cabeçalho para entrada e semáforos foi incluído no início do arquivo C. O método principal foi declarado junto com outra função, "get_val ()". A partir do método principal, definimos uma variável "V" obtendo seu valor da função get_val. Este método foi chamado enquanto passou com dois argumentos nos parâmetros. Agora o controle foi dado à função get_val (). Esta função contém dois argumentos, e.g. SID como ID de semáforo e "Semnum" como número de semáforo. Os valores passados ​​1 e 4 serão salvos para esses argumentos.

O comando SEMCTL foi utilizado dentro da função para obter o conjunto de semáforo atual usando o ID de semáforo e o número de semáforo. A função getVal foi usada aqui para obter o valor atual do semáforo. Após a coleta de um valor de semáforo, ele foi devolvido ao método principal. O valor foi armazenado na variável "V". Este valor variável será exibido usando a instrução printf mostrada no código C. Agora você pode salvar o código preenchido por "Ctrl+S" e deixá -lo de volta ao console, utilizando comandos de atalho "Ctrl+X".

Vamos compilar o “SEMCTL.Arquivo C ”no console. Use o compilador “GCC” recomendado para esses tipos de códigos C complicados. A compilação retorna o aviso, mas não há necessidade de pânico. Execute seu arquivo com o “a.out ”comando. A saída mostra que o valor atual do semáforo é "-1".

$ GCC SEMCTL.c
$ ./a.fora

Vamos abrir o arquivo mais uma vez para torná -lo diferente um pouco. Abra -o usando o editor "Nano" e defina a variável "max_comps" com algum valor, e.g. 10. Desta vez, atualize o código com o script mostrado abaixo. Comece a partir da inicialização do método principal. Ele contém a chamada de função do método comp_use (). Agora o controle foi dado ao método comp_use.

A função comp_use contém o loop "for" para usar o valor variável "max_comps" como um valor máximo para o loop "for". Até que o loop termine, a declaração de impressão mostrará o número do computador. Ele também recebe e imprime o valor atual do semáforo do método "get_val" chamando -o aqui. O método get_val foi executado e retornou seu valor à declaração de impressão da função comp_use () para exibi -lo na tela. Salve o arquivo de código mais uma vez e desista para voltar.

Agora temos que compilar o código atualizado com o comando "gcc" para compilação. Após a compilação bem -sucedida, executamos o arquivo e obtivemos o valor do semáforo para cada computador.

$ GCC SEMCTL.c
$ ./a.fora

Conclusão:

A chamada do sistema SEMCTL e seu trabalho foi demonstrado claramente neste guia com a linguagem C usando o Ubuntu 20.04 Sistema Linux. Esperamos que você ache este artigo útil enquanto entende e aprende os conceitos de semáforos no sistema Linux.