Muy buenas,
estoy aqui intentando aprender algo de programacion c en linux, y me he encontrado con esta estructura.
Para que sirve, y que funcionamiento tiene?
Gracias de antemano por las respuestas.
Un saludo!
| |||
Respuesta: Estructura stat en linux, ¿para que sirve, y como funciona? Por lo que acabo de leer stat tiene informacion sobre un archivo. Esta informacion se obtiene usando la funcion stat. int stat(const char *nomb_arch, struct stat *buf) -- obtiene información acerca del archivo apuntado por nomb_arch. No se requieren permisos de lectura, escritura o ejecución, pero todos los directorios listados en nomb_arch deberán estar disponibles.
Código C:
Ver original Al usar esa funcion obtienes esos datos sobre un archivo... |
| ||||
Respuesta: Estructura stat en linux, ¿para que sirve, y como funciona? Buenas, muchas gracias por la ayuda sam90, ahora tengo otra pequeña duda. Viendo algun programa, veo que se utizilan argc y argv[]. Segun he podido entender, argc te dice cuantos argumentos tiene el fichero, y el argv[] te dice cual es cada argumento... Pero no lo entiendo del todo, por ejemplo: Tengo un archivo con el nombre "ejemplo.txt", como me aparecen su informacion? Es decir, por ejemplo, si me da la informacion de su tamaño, como me aparece representado? ejemplo.txt 512 ? En este caso, seria argc=2 , argv[1]=ejemplo.txt y argv[2]=512 ? Por otro lado, he encontrado un programa, y no entiendo muy bien su funcionamiento: [I]#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define TAMANO 512 void report( char * name, struct stat * buffer) { printf("%s:",name); printf( "i-nodo: %d\t", buffer->st_ino ); printf( "size: %ld\n", buffer->st_size ); } int main( int argc, char *argv[] ) { struct stat estructura; if (argc < 2) Que hace este if ? escribe como segundo argumento { del archivo un error? Cual es el error? char buff[]="Error de (1)"; write(2,buff, sizeof(buff)); exit(-1); } int i=1; while(i<argc) { if( stat( argv[i], &estructura ) < 0 ){ Que es lo que compara este if ? perror( "(2)" ); exit(-1); } else report(argv, &estructura); Cual es el significado de report ? i++; } return 0; } Bueno, ya se que son bastantes dudas, soy bastante novato en esto, pero agradeceria cualquier pequeña ayuda. Gracias de nuevo. Un saludo!
__________________ "Independizate de la esclavitud mental; tan solo nosotros mismos podemos liberar nuestra mente"-Bob Marley |
| |||
Respuesta: Estructura stat en linux, ¿para que sirve, y como funciona? argc argv[] se utilizan para ver los argumentos con los cual se invocado el programa. Por ejemplo compilamos mi programa con el siguiente nombre mirpograma.exe Si lo ejecutamos de la siguiente forma: miprograma.exe "hola mundo" 19 12 La variable argc va a ser igual a 3 y la variable argv = {"miprograma.exe","hola mundo", "19", "12"} Tener en cuenta que como primer argumento viene el nombre con el cual se invoco al programa. En tu codigo que pasas la idea es ejecutarel programa con nombres de fichero como argumentos. Entonces despues ejecuta la funcion stat para cada fichero y te devuelve info de la estructura. |
| ||||
Respuesta: Estructura stat en linux, ¿para que sirve, y como funciona? Gracias de nuevo, en serio, me estas siendo de gran ayuda. Creo que ya lo estoy entendiendo, pero me podrias aclarar cada una de las tres dudas que he puesto en el programa en negrita? Un saludo!
__________________ "Independizate de la esclavitud mental; tan solo nosotros mismos podemos liberar nuestra mente"-Bob Marley |
| |||
Respuesta: Estructura stat en linux, ¿para que sirve, y como funciona? El primer If chequea que se alla invocado el programa con algun parametro...osea con algun archivo. algo asi miprograma.exe archivo.txt archivo2.eee .... lo compara con menor a dos porque como convension vienen el nombre como se invoco el programa como primer parametro. Osea como minimo tiene que haber dos argumentos. El segundo if compara si la funcion stat devuelve algun error. En c/c++ se pueden calcular funciones dentro de un if y comparar directamente su resultado dentro del if. en este caso se ejecuta la funcion stat rellena el campo estructura y devuelve un numero. Si este es menor a cero entonces hubo un error. Lo ultimo, lo unico que hace es llamar una funcion que esta definida mas arriba del main. Te recomiendo que empiece por algo mas basico porque las dudas que estas haciendo son bastante basicas para el pedazo de codigo que estas analisando. |
Etiquetas: |