Limpeza / limpeza do pipe nomeado

0

Eu crio o FIFO para se comunicar entre processos não relacionados. No meu projeto não há como quebrar loop infinito em que o programa é executado. Então, eu não posso unlink do FIFO.

Eu pensei que eu poderia remover e recriar com o mesmo nome se o FIFO existisse de antemão no processo do gravador. Mas e se o processo do leitor abrir o FIFO antes que o processo de gravação tenha a chance de removê-lo e recriá-lo? Eu poderia usar sleep a esse respeito, mas não parece eficiente.

Além disso, também achei que poderia suspender o processo do leitor até que ele recebesse um sinal do processo do gravador, mas o PID do processo do leitor não é conhecido. Pense neles como dois scripts separados e diferentes. Assim que o SO é inicializado, eles iniciam as execuções.

  • Existe uma maneira de limpar / liberar o FIFO?
  • open() é usado para abrir o FIFO. Se eu close o FIFO e reabri-lo para escrever em um loop, ele é limpo / liberado? (garantia?)

Verificar o inode sempre gera o mesmo número de inode. Quero dizer, mesmo que eu use rm <fifo.name> via terminal, então recrie FIFO, o mesmo número de inode é dado.

FIFO = '/tmp/test.fifo'
fd = os.open(FIFO, os.O_RDONLY)

info = os.fstat(fd)
print("inf fstat " + str(info.st_ino))

statinfo = os.stat(FIFO)
print("inf stat " + str(statinfo.st_ino))

Saída:

inf fstat 521406
inf stat 521406
    
por snr 27.07.2018 / 10:22

0 respostas