Como executar um programa quando um arquivo de texto é chamado e ainda retornar o texto apropriado

1

A questão é bastante simples. Eu quero criar um programa que iria ligar o VFS e executar o programa para gerar ou ler os dados que seriam criados. I.E .: o arquivo em si conteria todas as revisões, hashes, dados e editores anteriores de suas várias versões. Mas em uma chamada normal para o arquivo (ala gcc sourcefile.c, vim readme.txt o arquivo seria ler / escrever) como um arquivo de texto normal.

Eu acho que teria que ligar o VFS para fazer isso, e tratar o meu arquivo mais como um 'arquivo especial' no sistema de arquivos para que ele não agisse normalmente e chame o programa em questão que realmente lê e produz os dados dos arquivos. Mas eu estou querendo saber onde eu começaria com a documentação em um projeto como o primeiro várias pesquisas no google e telefone um amigo falhou.

    
por Valarauca 19.11.2013 / 21:30

2 respostas

2

Você está procurando FUSE (que significa Filesystem in USErspace). O FUSE é um driver de kernel e utilitários associados ao espaço de usuário e bibliotecas que permitem que um programa de espaço de usuário (potencialmente sem privilégios) implemente um driver de sistema de arquivos. O programa define como implementar as primitivas do sistema de arquivos ( open , read , write , mkdir , etc.). O FUSE está disponível para variantes mais modernas de unix .

Já existem muitos sistemas de arquivos FUSE existentes . De particular interesse para você é copyfs , que mantém um histórico de todas as versões sucessivas de todos os arquivos.

Se o que você quer é realmente manter as versões anteriores de um arquivo, seria melhor ter um sistema de controle de revisão como CVS, git, Mercurial, etc. Um sistema de controle de revisão não apenas armazena versões sucessivas dos arquivos sob seu controle, mas também armazena comentários alterados, permite ramificações no histórico de versões, permite agrupar vários arquivos e muito mais.

    
por 20.11.2013 / 01:22
0

where would I start with documentation on such a project

Dê uma olhada no avfs .

    
por 19.11.2013 / 23:40