Pergunta

Qual é o diferente entre os soquetes do Domínio IPC e UNIX e os tubos nomeados?

Recebi definições vagas de vários livros, mas não consegui clareza sobre qual deve ser usado onde.

Foi útil?

Solução

De qualquer forma, dois processos se comunicam entre si podem ser considerados uma forma de IPC.

Por exemplo:

  1. Tubos sem nome (gat file.txt | grep foo) ou Pipes nomeados
  2. UNIX DOMAIN SOCKETS
  3. Soquetes TCP ou UDP
  4. Sockets NetLink no Linux
  5. Vários mecanismos de memória compartilhada, como arquivos mapeados de memória
  6. Mensagem de alta velocidade passando como Zeromq

Outras dicas

Como o QRDL declarou, soquetes de domínio UNIX e tubos nomeados são mecanismos IPC.

Desses dois, os tubos nomeados são mais simples de se trabalhar, mas muito menos flexíveis que os soquetes do domínio UNIX. Por exemplo, se você potencialmente espera mais de um processo de leitura para cada processo de escrita, os soquetes UNIX no domínio são obrigatórios; Se você espera que o processo de leitura pare e inicie durante a execução do processo de escrita, precisará de soquetes de domínio UNIX.

IPC apoia Comunicações entre processos. Os soquetes de domínio Unix e os tubos nomeados são apenas dois mecanismos IPC, descritos na Wikipedia:

Obrigado por se concentrar na pergunta, poucos recursos atualizados:

Nos soquetes de domínio, a comunicação real (a troca de dados) não usa o sistema de arquivos, mas buffers na memória do kernel. Por padrão, é o modo Full-Duplex.

Os tubos nomeados são identificados pelo ponto de acesso, um arquivo mantido no sistema de arquivos para lidar com os dados. Um tubo nomeado por padrão suporta operações de leitura e gravação bloqueadas. No entanto, é possível fazer com que os tubos nomeados suportem operações sem bloqueio, especificando o sinalizador O_NONBLOCK enquanto os abre. Um tubo nomeado deve ser aberto somente leitura ou somente gravação. Não deve ser aberto para leitura-escreva porque é meio duplex, um canal de mão única.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top