ls
int maint (void) {
DIR *dp;
struct dirent *ep;
dp = opendir("./")
if (dp != NULL) {
while (ep = readdir (dp)) {
puts (ep->d_name);
}
(void) closedir(dp);
}
else {
perror("Couldn't open the directory");
}
return 0;
}
ls
**ls** [ **-1** ] [ **-A** ] [ **-C** ] [ **-F** ] [**-H** | **-L** ] [ **-N** ] [ **-R** ] [ **-X**] [ **-a** ] [ **-b** ] [ **-c** ] [ **-d** ] [ **-e** ] [ **-f** ] [ **-g** ] [ **-i** ] [ **-l** ] [ **-m** ] [ **-n** ] [ **-o** ] [ **-p** ] [ **-q** ] [ **-r** ] [ **-s** ] [ **-t** ] [ **-u** ] [ **-U** ] [ **-x** ] [ *File* ... ]
**ls** **-f** [ **-C** ] [ **-d** ] [ **-i** ] [ **-m** ] [ **-s** ] [ **-X**] [ **-x** ] [ **-1** ] [ **-U** ] [ *Directory ...* ]
main(int argc, char *argv[]) {
int fdold, fdnew;
int(argc != 3) {
fprintf(stderr, "se precisan 2 argumentos\\n");
exit(1);
}
fdold = open(argv[1], O_RDONLY);
if (fdold == -1) {
fprintf(stderr, "No se pudo abrir el fichero %s\\n", argv[1];
exit(1);
}
fdnew = creat(argv[2], 0666);
if (fdnew == -1) {
fprintf(stderr, "No se pudo abrir el fichero %s\\n", argv[2];
exit(1);
}
copy(fdold, fdnew);
exit(0);
}
void copy (int old, int new) {
int count_read;
char buffer[2048];
while ((count_read = read(old, buffer, sizeof(buffer))) > 0 ) {
write(new, buffer, count_read);
}
}
find
void find(char *file) {
DIR *dp; // declaro el puntero al directorio
struct dirent *ep; // declaro el puntero a la lista de elementos del directorio
dp = opendir("./"); // intento abrir el dir actual
if (dp != NULL) {
while (ep = readdir(dp)) { // mientras pueda leer del stream del dir,
// Me fijo que el string pasado se contenga en el nombre
**if (strstr(ep->d_name, file) != NULL) {**
// imprimo el nombre
puts("%s",ep->d_name);
}
}
closedir(dp); // cierro el directorio
}
else { // si no abrió, lanzo error
perror("No such directory");
}
return 0;
}
La visión del sistema de archivos debe ser la de una partición de $N$ bloques (de 0 a $N-1$) de un tamaño $(N*4kb)$ bloques. Si suponemos un disco de unos 64 bloques, este podría verse así:
A la hora de armar un sistema de archivos, vamos a almacenar datos. La mayor cantidad del espacio ocupado en un filesystem es por los datos de los usuarios. Esto se llama data region.
Por ejemplo, podemos ocupar $56$ de los $64$ bloques: