Arquivos abertos por processos

1. Arquivos abertos por processos

Felipe Freitas
slashgoo

(usa Ubuntu)

Enviado em 30/11/2011 - 09:00h

Galera,
tenho um trabalho pra fazer o qual tenho que criar um device driver que irá criar um arquivo de dispositivo em /dev e quando eu acionar esse arquivo de dispositivo com a systemcall read() irá mostrar todos os processos e os seus arquivos aberto no momento.

Já está praticamente pronto, soh nao estou conseguindo mostrar os arquivos abertos pelos processos.

Alguem sabe me dizer como faço para mostrar o caminho dos arquivos para cada processo?

Tentei o seguinte,
Peguei o processo pela task struct, pela task acessei a file struct, pela file struct acessei a struct dentry, pela dentry a struct inode. Eh esse o caminho? Se for qual estrutura do inode que tem o caminho do arquivo?

Se alguem puder me ajudar agradeço muito.



  


2. Re: Arquivos abertos por processos

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 30/11/2011 - 10:40h


man 5 proc

/proc/[pid]/fd
This is a subdirectory containing one entry for each file which the process has open, named by its file descriptor, and which is a symbolic link to the actual file. Thus, 0 is standard input, 1 standard output, 2 standard error, etc.




3. Re: Arquivos abertos por processos

Felipe Freitas
slashgoo

(usa Ubuntu)

Enviado em 30/11/2011 - 13:29h

mas eu preciso acessa-lo atraves de alguma struct jah q estou programando em C.

O que eu preciso fazer e praticamento o que o comando "lsof" faz.


4. Re: Arquivos abertos por processos

Felipe Freitas
slashgoo

(usa Ubuntu)

Enviado em 02/12/2011 - 16:51h

pela task struct eu chego nos arquivos abertos?


5. Re: Arquivos abertos por processos

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 02/12/2011 - 17:44h

Cara, já tentou usar a struct stat, ou mesmo a função stat()?

http://linux.die.net/man/2/stat

Dá uma olhada ai e vê se é o que você quer... se não for posta denovo que vou continuar procurando algo mais preciso...


Enzo Ferber
[]'s


6. Re: Arquivos abertos por processos

Felipe Freitas
slashgoo

(usa Ubuntu)

Enviado em 05/12/2011 - 22:16h

Nao consegui pela struct stat que vc falou
mas vou postas o meu codigo aki q talvez vcs possa me ajudar melhor


int pid, i;
char *diretorio;
struct files_struct *files;
struct fdtable *fdt=NULL;
struct file *fl=NULL;

for_each_process(task){

files = task->files;
pid = task->pid;

if(!files){
printk(KERN_INFO "%d - Nao tem arquivo\n", pid);
}
else if(files){
fdt = files_fdtable(files);
if(fdt==NULL){
printk(KERN_INFO "%d - Nao tem arquivo2222222222222222", pid);
}
else{
for(i=0;fdt->max_fds;i++)
{
if(!fdt->fd[i]){
printk(KERN_INFO "%d - Nao tem arquivo33333333333333", pid);
break;
}
diretorio = fl->f_dentry->d_inode->""""""Onde possivelmente devo apontar""""""";
printk(KERN_INFO "%s---%d\n", diretorio,pid);
}
}

}







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts