Um tubo nomeado às vezes chamado de FIFO, é uma maneira de interação entre processos na computação. É uma versão Linux da noção clássica do tubo. Um tubo tradicional é "sem nome" e dura apenas o tempo que o procedimento. Por outro lado, um tubo nomeado pode durar enquanto o sistema estiver operacional, mesmo que o processo não esteja mais ativo. Se não for mais necessário, pode ser removido. Um tubo nomeado geralmente aparece como um arquivo e os processos se conectam a ele para interação entre processos.
Um arquivo FIFO é um tipo de arquivo de armazenamento local que permite que dois ou mais processos interajam entre si, lendo e escrevendo para e para ele. A principal desvantagem dos tubos é que eles só podem ser utilizados por um processo, que pode ter leitores e escritores ou processos que usam a mesma lista de descritores de arquivos; Como resultado, os tubos têm uma grande desvantagem: eles não podem transmitir dados entre processos que não estão relacionados. Isso é como eles não compartilham uma tabela de descritor de arquivo. No entanto, se os tubos receberem nomes, eles podem ser lidos e escritos como qualquer outro arquivo. Os processos nem precisam se conectar.
Pipes nomeados são FIFO, eu.e. Primeiro, primeiro os tubos. A concha pode ser usada para gerar FIFOs. Eles podem, no entanto, ser feitos com a programação C usando a chamada do sistema mknod (). A opção de modo determina as permissões que serão usadas, bem como o tipo de nó que será gerado. Deve ser um bit netwise ou conjunção de um dos tipos de arquivos abaixo e os privilégios do novo nó. O UMASK do processo modifica as permissões como de costume: as permissões do nó gerado. Se mknod () for bem -sucedido, ele retornará zero; Caso contrário, ele retorna -1.
Sintaxe
int mknod (const char *nameofpath, mode_t mode, dev_t dev);O nome do caminho que você está usando para o arquivo é o nome do caminho. Um conjunto de bits que descrevem o tipo de arquivo e os privilégios de acesso que você pretende utilizar é conhecido como 'modo ”. S_IFDIR, que é usado para construir um diretório, e S_ififo, que é usado para estabelecer um FIFO, são os únicos tipos de arquivo permitidos. Na maioria das vezes, o Dev é “ignorado.”
Exemplo
Depois de explicar o conceito básico e a sintaxe do sistema mknod () chamadas na linguagem de programação C, definimos um exemplo para o entendimento do nosso usuário. Estamos implementando nosso código de exemplo no Ubuntu 20.04 Sistema operacional Linux com um compilador GCC para execução e compilação de código. Usamos o comando nano no shell para a criação do arquivo. Para executar um exemplo no idioma C, usamos o “.Extensão de arquivo C ”.
Vamos executar o comando listado abaixo no console do Ubuntu 20.04 Sistema operacional Linux para criação de arquivos.
$ nano w.cNo nosso caso, o nome do arquivo é “w.C ”, você pode modificá -lo também. Agora o arquivo será criado e será aberto no editor GNU. Você tem que escrever o script mostrado na imagem abaixo afixada.
O script pode ser modificado de acordo com o seu trabalho, mas para esse fim, você deve entender completamente este exemplo básico. O descritor de arquivo padrão para um programa para escrever mensagens de aviso é dirigido, muitas vezes conhecido como erro padrão. O erro é impresso na tela de saída ou no terminal da janela usando o Steer. Steer tem sido uma das saídas de comando, semelhante ao stdout, que geralmente é registrado em outros lugares. S_IRUSR é uma constante macro Posix encontrada no SYS/STAT. h. O bit de permissão de leitura do usuário é o que é chamado. O prefixo S_ RUSR poderia se referir ao status, como a leitura do usuário. S_IRUSR é uma constante macro Posix encontrada no SYS/STAT. h. O bit de acesso de leitura do usuário é o que é chamado. O prefixo S_ RUSR poderia se referir ao status, como a leitura do usuário. Queremos fornecer ao usuário ler e escrever acesso nesta situação. Como resultado, definimos o modo como Irusr | S iwusr | S ififo. Dev é verificado se o tipo de arquivo for S_IFCHR ou S_IFBLK; No entanto, é desconsiderado.
Como resultado, usamos 0 como o parâmetro. O método perror () retorna uma mensagem de erro padrão detalhando o erro mais recente encontrado enquanto chama um sistema ou função da biblioteca. Depois de escrever e entender o script, você precisa fechar o arquivo e simplesmente voltar ao console. Vamos executar o comando abaixo no Ubuntu 20.04 Console do sistema operacional Linux para compilação e execução de scripts.
$ gcc w.cObservando a imagem acima, você pode identificar facilmente que nenhum erro surge após a compilação. A saída esperada também pode ser vista na tela.
Conclusão
Este artigo foi sobre o sistema Mknod () System na linguagem de programação C. Tentamos o nosso melhor para esclarecê -lo sobre o uso básico da chamada do sistema mknod (). A sintaxe da chamada do sistema mknod () foi explicada para a compreensão do usuário. O exemplo usado neste guia é muito simples, e os usuários iniciantes também podem entender na primeira vez. Espero que este artigo o guie sempre que você tentar usar o sistema MKNOD () System na linguagem de programação C.