Posso adicionar a / proc / self?

2

Eu quero criar várias regiões de memória nomeadas no meu programa e mmap em algum lugar para que outros processos possam lê-las. Não posso garantir que apenas uma instância do meu programa seja executada por vez. Idealmente, gostaria de colocar os blocos em /proc/self/<blockname> ou algo assim. Isso é possível? Ou há outro lugar onde posso colocar os arquivos mapeados? (Meu programa normalmente não é executado como root.)

Eu não quero usar /proc/self/fd ou /proc/self/map_files , pois isso não permite nomenciá-los (até onde eu sei).

    
por Rena 07.03.2016 / 22:44

2 respostas

3

Não, você não pode adicionar sua estrutura de maneira significativa a /proc porque ele é gerado (não é um sistema de arquivos "real"). Da mesma forma, /sys em algumas máquinas. Alterar a estrutura de /proc não é simples (veja por exemplo Criando uma pasta sob / proc e criando uma entrada na pasta ).

Leitura adicional:

@ mark-plotnick sugeriu memória compartilhada POSIX, que suporta nomes .

Leitura adicional:

por 07.03.2016 / 22:51
1

Não. O kernel decide o que está em /proc/PID , não o processo. ( /proc/PID é o que você está perguntando, não /proc/self : outros processos não vêem seu processo em /proc/self .)

Quando os processos precisam transmitir dados sobre si mesmos, o local convencional para colocar essas informações está sob /var/run para processos iniciados pelo administrador (ou seja, serviços do sistema) e em /tmp ou sob o diretório inicial do usuário para processos iniciados por um usuário. Para informações ligadas a um processo, o diretório inicial geralmente é uma má ideia, porque pode ser compartilhado entre máquinas. Sistemas Linux modernos também possuem /run/user/UID . Escolha um e defina uma convenção, por ex. um diretório /tmp/myapplication-1234 ou /run/user/myapplication/1234 em que 1234 é o PID. Exclua este diretório quando o processo terminar.

    
por 08.03.2016 / 02:45

Tags