file limit em dos emuladores

1

Atualmente, estou tentando executar um aplicativo dos console que precisa abrir um certo número de arquivos simultaneamente (mais de 15). Eu tentei com dosbox e dosemu. O Dosbox deve suportar 127 arquivos simultâneos, e o dosemu possui o arquivo config.sys no qual você pode definir esse limite. Então eu tentei um pequeno programa em C que abre arquivos e eu obtive este resultado:

int main (void) {

  FILE *archivos[300];
  char numstr[15];
  int i=0,nmax=0;

  printf("\nIngrese el numero maximo de archivos que desea crear: ");
  scanf("%d",&nmax);
  for( i=0; i<nmax ; i++) { 
    sprintf( numstr, "prueba%d.dat", i);
    if(!(archivos[i]=fopen( numstr ,"w"))) 
    {
      printf("\nNo se pudo abrir el archivo %s", numstr);
      printf("\nEl numero maximo de archivos abiertos fue: %d", i);
      exit(1);
    }
  }

  printf("\nNo ocurrio un error. El numero de archivos abiertos es: %d\n", i);
  for( i=0; i<nmax; i++)
    fclose( archivos[i] ); 
  return( 0 );
}

Tanto o dosemu quanto o dosbox me permitem abrir apenas 15 arquivos.

isto é config.sys do DOSEMU (onde arquivos = 100):

rem config.sys for DOSEMU + FreeDOS
rem note that the initial "D:" is set to "Z:" at the end
SWITCHES=/F
DOS=UMB,HIGH
dosdata=umb
lastdrive=Z
files=100
stacks=0
buffers=10
device=d:\dosemu\ems.sys
devicehigh=d:\dosemu\cdrom.sys 
install=d:\dosemu\lredir.com z: linux\fs\${DOSEMU_LIB_DIR}/drive_z ro
shellhigh=z:\command.com /e:1024 /p
    
por Gonzalo 21.03.2014 / 15:46

1 resposta

0

Ok, depois de fazer uma pesquisa, descobri que mesmo que você defina o limite de arquivo em dosbox ou dosemu, isso afetará o número de arquivos que você pode abrir por terminal. O número de arquivos que você pode abrir a partir de um único processo tem a ver com o número de identificadores de arquivos disponíveis, neste caso 20 para sistemas msdos, 5 para stderr, stdin, stdout, stdaux, sdtprn. Como explica esta FAQ do programador do MS-DOS .

    
por Gonzalo 27.03.2014 / 14:42