unix-es
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
unix-es [2013/05/09 17:59] – [Características de un archivo] lmateu | unix-es [2016/11/15 13:15] (actual) – [Características de un archivo] lmateu | ||
---|---|---|---|
Línea 31: | Línea 31: | ||
char *buf; | char *buf; | ||
int fd; | int fd; | ||
- | | + | |
+ | ssize_t | ||
leidos = read(fd, buf, nbytes); | leidos = read(fd, buf, nbytes); | ||
| | ||
Línea 172: | Línea 173: | ||
/* Uso: micp from to */ | /* Uso: micp from to */ | ||
#include < | #include < | ||
- | #include <stdlib.h> | + | #include <sys/types.h> |
- | #include <stdarg.h> | + | #include <sys/stat.h> |
#include < | #include < | ||
+ | #include < | ||
#include < | #include < | ||
+ | #include < | ||
| | ||
- | | + | |
- | va_list args; | + | |
- | + | ||
- | va_start(args, | + | |
- | fprintf(stderr, | + | |
- | vfprintf(stderr, | + | |
- | fprintf(stderr, | + | |
- | va_end(args); | + | |
- | + | ||
- | exit(1); | + | |
- | } | + | |
| | ||
int main(int argc, char *argv[]) { | int main(int argc, char *argv[]) { | ||
- | int f1, f2; | + | int in, out; |
ssize_t n; | ssize_t n; | ||
- | char buf[BUFSIZ]; | + | char buf[SIZE]; |
- | + | ||
- | if (argc!=3) | + | if (argc!=3) |
- | | + | |
- | + | | |
- | if ((f1= open(argv[1], | + | } |
- | | + | |
- | + | if ((in= open(argv[1], | |
- | if ((f2= creat(argv[2], | + | |
- | | + | |
- | + | } | |
+ | | ||
+ | if ((out= creat(argv[2], | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
/* usando stats se pueden mantener los permisos */ | /* usando stats se pueden mantener los permisos */ | ||
- | | + | |
- | while ((n= read(f1, buf, BUFSIZ))>0) | + | while ((n= read(in, buf, SIZE))> |
- | if(write(f2, buf, n)!=n) | + | if (write(out, buf, n)!=n) |
- | | + | |
- | + | | |
+ | } | ||
+ | } | ||
+ | |||
+ | if (n<0) { | ||
+ | perror(argv[1]); | ||
+ | exit(5); | ||
+ | } | ||
+ | |||
+ | close(in); | ||
+ | close(out); | ||
+ | | ||
return 0; | return 0; | ||
} | } | ||
- | |||
==== Cambiar los permisos de un archivo ==== | ==== Cambiar los permisos de un archivo ==== | ||
Línea 228: | Línea 237: | ||
char *path; | char *path; | ||
unlink(path); | unlink(path); | ||
+ | |||
+ | ==== Cambiar el nombre de un archivo ==== | ||
+ | |||
+ | Se usa la funcion //rename//: | ||
+ | |||
+ | #include < | ||
+ | char *oldpath, *newpath; | ||
+ | rename(newpath, | ||
==== Crear un link duro ==== | ==== Crear un link duro ==== | ||
Línea 246: | Línea 263: | ||
Si se borra datos.txt, el archivo datos2.txt sigue siendo válido. | Si se borra datos.txt, el archivo datos2.txt sigue siendo válido. | ||
+ | También se puede crear un link duro en un directorio distinto del directorio en donde aparece el nombre | ||
+ | original del archivo. | ||
+ | de la misma partición de disco//. | ||
==== Crear un link simbólico ==== | ==== Crear un link simbólico ==== | ||
- | Se usa la función // | + | Se usa la función // |
#include < | #include < | ||
Línea 255: | Línea 275: | ||
symlink(path, | symlink(path, | ||
- | Se usa para crear un nombre sinónimo de un archivo existente. | ||
También se puede crear un link simbólico desde el shell de comandos: | También se puede crear un link simbólico desde el shell de comandos: | ||
Línea 261: | Línea 280: | ||
En este caso datos2.txt es un nombre alternativo para datos.txt. | En este caso datos2.txt es un nombre alternativo para datos.txt. | ||
- | ¡Pero cuidado! | + | ¡Pero cuidado! |
+ | es que si se borra datos.txt, datos2.txt ya no es válido. | ||
+ | |||
+ | La ventaja con respecto a los links duros es que sí se pueden crear links simbólicos | ||
+ | con el nuevo nombre en una partición distinta de la partición en donde se ubica el | ||
+ | nombre original. | ||
==== Acceso directo ==== | ==== Acceso directo ==== | ||
Línea 306: | Línea 330: | ||
| | ||
buf= getcwd(buf, size); /* guarda en buf pathname absoluto del | buf= getcwd(buf, size); /* guarda en buf pathname absoluto del | ||
- | directorio actual, retorna NULL si error */ | + | directorio actual, retorna NULL en caso de error */ |
+ | chdir(name); | ||
Llamadas al sistema (sección 2): | Llamadas al sistema (sección 2): | ||
Línea 335: | Línea 360: | ||
st_size | st_size | ||
st_atime | st_atime | ||
- | st_ctime | + | st_ctime |
st_mtime | st_mtime | ||
Línea 347: | Línea 372: | ||
S_ISLNK | S_ISLNK | ||
- | Los atributos se pueden | + | Esta función es usada por el comando ls -l para averiguar las características de un archivo: |
+ | |||
+ | $ ls -l index.html | ||
+ | | ||
+ | |||
+ | La mayoría de estos atributos se pueden | ||
chmod(path, perms); | chmod(path, perms); | ||
chown(path, owner, group); | chown(path, owner, group); | ||
+ | utime(path, ...); | ||
- | También es posible | + | La función utime (ver manual) permite "falsificar" |
lo usa el comando tar para restaurar la fecha y hora de creación y modificación de los archivos. | lo usa el comando tar para restaurar la fecha y hora de creación y modificación de los archivos. | ||
unix-es.1368122340.txt.gz · Última modificación: 2013/05/09 17:59 por lmateu