função mkfifo c

função mkfifo c
“Um arquivo FIFO personalizado com o nome FileName é criado pela função MKFIFO. Um arquivo que se comporta como um tubo é referido como um FIFO ou um tubo nomeado. Para escrever, uma operação abre o FIFO e para a leitura, outra. Para abrir um tubo nomeado, podemos utilizar a função da biblioteca "mkfifo ()". O nome do caminho do FIFO e o modo do FIFO são os dois parâmetros que a função "mkfifo ()" aceita. As permissões do arquivo são definidas usando o parâmetro de modo; Para mais informações, consulte Atribuir permissões de arquivo. O valor de retorno típico do MKFIFO é 0, o que indica sucesso. Neste guia, explicaremos esse conceito em detalhes e exploraremos um exemplo aqui em que utilizaremos essa função “mkfifo ()” e escreveremos em um arquivo e lê -lo em outro arquivo.”

Sintaxe
int mkfifo (const char *pathname, mode_t mode);

Exemplo
Vamos realizar este exemplo no Ubuntu 20.04. Primeiro, instalamos o compilador GCC e depois abrimos o editor de texto do Ubuntu 20.04 e coloque algum código. Vamos criar dois arquivos diferentes aqui e depois ler/gravar dados para esses arquivos usando a função "mkfifo ()" na programação C. Para criar um código C, devemos colocar os arquivos de cabeçalho. O “stdio. O arquivo de cabeçalho H ”está aqui, que é a entrada/saída padrão que inclui as informações de entrada/saída. Temos uma “string. Arquivo de cabeçalho H ”e este arquivo de cabeçalho é usado aqui para as funções da string. Então temos o “unistd. Arquivo de cabeçalho H ”, que é utilizado para acessar a API. O “fcntl. H ”é usado para o controle de arquivos e“ SYS/STAT.H ”inclui blocos de construção que facilitam o aprendizado sobre as propriedades de um arquivo.

Além disso, incluímos o “sys/tipos.arquivo de cabeçalho H ”. Utilizamos a função "main ()" após esses arquivos de cabeçalho, e esta função declara o tipo de dados como "int". Abaixo disso, declaramos o número inteiro "int" e nomeie "fd". Depois disso, declaramos e inicializamos o "char" chamado "myfifo" e inicializamos com "/tmp/fifo". Agora, temos a função "mkfifo ()", onde passamos dois parâmetros. O primeiro parâmetro é "myfifo" e o segundo parâmetro é "0666" aqui. O primeiro parâmetro é o nome do caminho, e o segundo é o modo.

Em seguida, declaramos duas matrizes do nome "ARR1 []" e "ARR2 []" do tamanho "80". Utilizamos o loop "while ()" aqui e colocamos "1" nele. Dentro disso, durante o loop, temos declarações diferentes. Utilizamos o "Open ()" para ler ou escrever no arquivo. Colocamos o caminho do arquivo como o primeiro parâmetro e depois utilizamos a bandeira aqui como o segundo parâmetro, que é "O_WRONLY". Este sinalizador "O_WRONLY" é utilizado aqui, o que significa que abrimos este arquivo para escrever apenas. A função "fgets ()" está aqui para ler os personagens.

Em seguida, temos a função "write ()", que é usada para escrever dados do buffer declarado pelo usuário e, em seguida, fechando esse arquivo, utilizando a função "Close ()". Depois disso, novamente temos a função "Open ()", mas desta vez utilizamos a bandeira "0_RDONLY", o que significa que desta vez o arquivo está aberto para somente leitura. Também temos o "read ()" que é utilizado apenas para ler os dados que foram escritos anteriormente para este arquivo. Em seguida, usamos o "printf" para renderizar os dados na tela de saída e fechar novamente este arquivo, utilizando a função "Close ()". Devemos fechar o arquivo que abrimos. Aqui, fechamos o suporte do While Loop e colocamos a declaração "Return 0" abaixo disso.

Estamos criando o segundo código C aqui, colocando algumas linhas de código. Usamos os mesmos arquivos de cabeçalho neste código, que utilizamos no código acima. Então temos a função "main ()" e, dentro disso, declaramos o "int" como "fd1" e "char" como "myfifo". O "mkfifo ()" também é utilizado aqui da mesma maneira que o usamos no código acima. Aqui, temos duas matrizes "char" do nome "STR1" e "STR2" e atribuímos o tamanho como "80". A função "Open ()" é usada e a bandeira "0_RDONLY" é usada para indicar que o arquivo está aberto para acesso somente leitura desta vez. Temos uma função chamada "read ()" que é usada exclusivamente para ler dados.

Em seguida, renderizamos os dados na tela de saída usando "printf" e fechamos este arquivo usando a função "Close ()". O caminho do arquivo é o primeiro parâmetro, e o segundo parâmetro é a bandeira, que neste caso é “O_WRONLY.”Abrimos este arquivo para escrever apenas usando a bandeira“ O_WRONLY ”neste caso. Aqui, os personagens podem ser lidos usando a função "fgets ()". A função "write ()" é usada para escrever dados do buffer que o usuário declarou antes de usar a função "Close ()" para fechar o arquivo.

Agora, obtemos a saída abrindo dois terminais simultaneamente e executando o comando nos dois terminais ao mesmo tempo. Primeiro, compilamos os dois arquivos em terminais separados. No primeiro terminal, executamos o comando que é dado abaixo e depois passamos para o segundo terminal.

No segundo terminal, colocamos este comando para compilar o segundo arquivo de código C. Após a compilação bem -sucedida de ambos os comandos em diferentes terminais, vamos executar os dois códigos.

Para execução, colocamos o comando fornecido no primeiro terminal; Nada vai exibir aqui.

Agora, no segundo terminal, devemos executar este código escrevendo este comando que é mostrado aqui. Além disso, nada é exibido aqui.

No primeiro terminal, escreva "Olá", pressione Enter e abra o segundo terminal.

Este "olá" também é exibido aqui no segundo terminal, que escrevemos no primeiro terminal.

Aqui, você pode ver as saídas de ambos os arquivos nas imagens, que são dadas abaixo.

Conclusão

Apresentamos este guia para mostrar como a função "mkfifo ()" funciona na programação C. Explicamos essa função "mkfifo ()" em detalhes aqui, e também demonstramos um exemplo aqui em que utilizamos essa função "mkfifo ()". Também fornecemos a saída aqui, para que você verá facilmente como usar essa função "mkfifo ()" em c. Esperamos que este guia aprimore seu conhecimento das funções da programação C.