Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/12/2008, 16:36
aol00002
 
Fecha de Ingreso: diciembre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: creacion de procesos en linux usando hebras

#include <unistd.h> //Librerias a utilizar.
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
DIR *direccion;
struct stat buff;//Estructura donde se va a guardar toda la informacion del archivo.
struct dirent *dirr;
int cte;
int resul;
int contando=0;
typedef struct datos_hebra{
char* entra;
}t_datos_hebra;
void* contar(void* datos_hebra);

void* contar(void* datos_hebra){

t_datos_hebra* aux;
aux=(t_datos_hebra*) datos_hebra;

cte=lstat(aux->entra,&buff);
if((buff.st_mode & S_IFMT)==S_IFDIR)
{
printf("\nEl fichero es un DIRECTORIO\n");
direccion=opendir(aux->entra);//Abrimos el documento.
printf("\n**********************************\n");
printf("* Contenido del directorio. *\n");
printf("**********************************\n");
dirr=readdir(direccion);//Nos preparamos para leerlo.
while(dirr!=NULL)//Vamos leyendo el contenido del fichero.
{

printf("%s\n",dirr->d_name);

dirr=readdir(direccion);
contando++;
}
printf("\n");

resul=closedir(direccion);//Cerramos el fichero.

}
}
int main (int argc,char* argv[]){

int i;//Constante para for.
int res;//Constante.

t_datos_hebra* parametros;
int pid_proc_padre;//Pid del proceso padre.
int pid_proc_hijo; //Pid del proceso hijo.
pthread_t *ahebras;
parametros=(t_datos_hebra*)malloc(4*sizeof(t_datos _hebra));
ahebras=(pthread_t*)malloc((4)*sizeof(pthread_t));
res=fork();
parametros[0].entra=argv[1];
if(res==0){

pthread_create(&ahebras[0],NULL,(void*)contar,(void*)&(parametros[0]));
pid_proc_padre=getppid();//Nos devuelve el pid del proceso padre.
pid_proc_hijo=getpid();//Nos devuelve el pid del proceso hijo creado.
pthread_join(ahebras[0],NULL);
printf("Pid del proceso padre:%d\n",pid_proc_padre);
printf("Pid del proceso hijo:%d\n\n",pid_proc_hijo);
printf("Numero de entradas del directorio:%d\n\n",contando);
}



return 2;
}