Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/05/2013, 08:06
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 1 mes
Puntos: 83
Respuesta: Como hacer esto

Si los archivos o los datos no tienen nada que ver entre si puedes crearlos con procesos paralelos; te puedo comentar como hacerlos desde la win32 api:

Código:
unsigned long WINAPI WriteProcess(void *lpvoid) { 
    FILE *arxptr = (FILE *)lpvoid;
    char bc[100000]="aasdsadasdasdadsadasdsadadad";
    int b;
    
    for(b = 0; b < 10000; b++){
        strcat(bc, "a");
        fwrite(bc, sizeof(bc), 1, arxptr);
    }
    
    fclose(arxptr);
    printf("OK\n");
    
    return 0; 
} 



int main() {
	FILE *arx;
	int file_ctr;
	char filename[80];
	void *hProc;
	unsigned long dw; 
	
	for(file_ctr = 0; file_ctr < 11; file_ctr++) {
        sprintf(filename, "file%d.txt", file_ctr);
        if((arx = fopen(filename, "wt"))) {
    		if(!(hProc= CreateThread(NULL, 0, WriteProcess, arx, 0, &dw))) {
                                //error en crear el proceso
				fclose(arx);
			}
		}
                else {
                    CloseHandle(hProc);
                }
	}
        else {
            //error en crear el archivo
        }
	return 0;
}
Creo que esto de los multiprocesos es dependiente del s.o., y creo recordar que mas o menos funcionan de forma parecida: puedes enviar un argumento al proceso. En este caso no puedes enviar el nombre porque es reutilizable, en cambio si que le puedes enviar el puntero de manejo del archivo porque se genero de forma dinamica. Ten en cuenta que una vez hayas abierto el 2º puntero no tendras forma de eliminar el primero porque el puntero apuntara al bloque de memoria reservado para el segundo manejador (lo mismo sucedera entre los demas y sus siguientes): por eso cierro en archivo desde el proceso ya que le envio el puntero antes de sobreescribirlo. Podrias hacer una lista dinamica con una struct de datos referentes al archivo o a los datos que debera contener de forma que pudieses enviar una referencia de cada elemento al proceso y desde el proceso mostrar mas informacion (en el ejemplo desde el proceso no puedes hacer referencia ni al nombre del archivo).

Saludos
vosk