table of contents
other languages
other sections
EXECVE(2) | Manual del Programador de Linux | EXECVE(2) |
NOMBRE¶
execve - ejecuta un programaSINOPSIS¶
#include <unistd.h>DESCRIPCIÓN¶
execve() ejecuta el programa indicado por filename. filename debe ser bien un binario ejecutable, bien un guión shell (shell script) comenzando con una línea de la forma " #! intérprete [arg]". En el segundo caso, el intérprete debe ser un nombre de camino válido para un ejecutable que no sea él mismo un guión y que será ejecutado como intérprete [arg] filename.VALOR DEVUELTO¶
En caso de éxito execve() no regresa mientras que en caso de error el valor devuelto es -1, y a la variable errno se le asigna un valor apropiado.ERRORES¶
- EACCES
- El fichero o el intérprete de guiones no es un fichero regular.
- EACCES
- Se ha denegado el permiso de ejecución para el fichero o para el intérprete de guiones o el intérprete ELF.
- EACCES
- El sistema de ficheros está montado con la opción noexec.
- EPERM
- El sistema de ficheros está montado con la opción nosuid, el usuario no es el superusuario y el fichero tiene activo el bit SUID o SGID.
- EPERM
- El proceso está siendo ejecutado paso a paso, el usuario no es el superusuario y el fichero tiene activo el bit SUID o SGID.
- E2BIG
- La lista de argumentos es demasiado grande.
- ENOEXEC
- El ejecutable no se encuentra en un formato reconocible, es para una arquitectura incorrecta o tiene algún otro error de formato que impide su ejecución.
- EFAULT
- filename apunta fuera de su espacio de direcciones accesible.
- ENAMETOOLONG
- filename es demasiado largo.
- ENOENT
- El fichero filename no existe o no existe un intérprete de guiones o un intérprete ELF, o no pudo encontrarse una biblioteca compartida necesitada por el fichero o el intérprete.
- ENOMEM
- No hay suficiente memoria disponible en el núcleo.
- ENOTDIR
- Un componente del camino filename o del camino del intérprete de guiones o del intérprete ELF no es un directorio.
- EACCES
- Se ha denegado el permiso de búsqueda en uno de los componentes del camino filename o del camino del intérprete de guiones.
- ELOOP
- Se han econtrado demasiados enlaces simbólicos al resolver filename, el nombre del intérprete de guiones o el nombre del intérprete ELF.
- ETXTBSY
- Uno o más procesos han abierto el ejecutable para escritura.
- EIO
- Se ha producido un error de E/S.
- ENFILE
- Se ha alcanzado el límite del número total de ficheros abiertos en el sistema.
- EMFILE
- El proceso ya tiene abiertos el número máximo de fichero.
- EINVAL
- El ejecutable ELF tiene más de un segmento PT_INTERP (es decir, ha intentado especificar más de un intérprete).
- EISDIR
- El intérprete ELF es un directorio.
- ELIBBAD
- El intérprete ELF no está en un formato reconocible.
CONFORME A¶
SVr4, SVID, X/OPEN y BSD 4.3. POSIX no documenta el significado de #! pero, en cualquier caso, es compatible. SVr4 documenta las condiciones de error adicionales EAGAIN, EINTR, ELIBACC, ENOLINK y EMULTIHOP; POSIX no documenta las condiciones de error ETXTBSY, EPERM, EFAULT, ELOOP, EIO, ENFILE, EMFILE, EINVAL, EISDIR ni ELIBBAD.OBSERVACIONES¶
Procesos SUID y SGID no pueden ser inspeccionados con ptrace().VÉASE TAMBIÉN¶
chmod(2), fork(2), execl(3), environ(5), ld.so(8)3 septiembre 1997 | Linux 2.0.30 |