Linux bajo el archivo
#include < unistd.h >
definición de función para int execl (const char * path, const char * arg, ...);
Valor de retorno de la función
El éxito no devuelve un valor, el error devuelve -1, el motivo del error se almacena en errno y se puede imprimir con perror ():
root @ wl-MS-7673: /home /Wl /desktop /c ++ # cat -n execl.cpp 1 /* Ejecutar /bin /ls -al /ect /passwd * /2 #include < unistd.h > /*** Archivo: execl.c ** /3 #include < iostream > 4 usando namespace std; 5 int main () 6 {7 //Ejecute ls en el directorio /bin, el primer parámetro es el nombre del programa ls, y el segundo parámetro es " -al ", tercero El argumento es "/etc /passwd" 8 9 if (execl ("/bin /ls", "ls", "-al", "/etc /passwd", (char *) 0) < 0) 10 11 {12 cout < < &ex; error de ejecución < < < < 13} 14 else 15 {16 cout < < " " < < < < endl; 17} 18 return 0; 19 } root @ wl-MS-7673: /home /wl /desktop /c ++ # g ++ execl.cpp -o execlroot @ wl-MS-7673: /home /wl /desktop /c ++ # ./execl -rw-r-- R-- 1 raíz raíz 1801 28 de noviembre 09:46 /etc /passwdroot @ wl-MS-7673: /home /wl /desktop /c ++ # Puede ver claramente que se ejecuta ls en el directorio /bin, el primer parámetro es el nombre del programa ls, el segundo parámetro es " -al ", y el tercer parámetro es " /etc /passwd ", pero ningún resultado de salida! ! Porque es esto Características de la función execl: cuando un proceso llama a una función exec, el proceso es reemplazado completamente por el nuevo programa, y el nuevo programa se ejecuta desde su función principal. Debido a que llamar a exec no crea un nuevo proceso, los ID de proceso antes y después no han cambiado. Exec simplemente reemplaza los segmentos de cuerpo, datos, pila y pila del proceso actual con otro programa nuevo. Reemplace los segmentos de cuerpo, datos, montón y pila del proceso actual con otro programa nuevo. El cuerpo del proceso actual ha sido reemplazado, luego la declaración después de execl, incluso si execl exits, no se ejecutará. Mire una parte del código:root @ wl-MS-7673: /home /wl /desktop /c ++ # cat -n execl_test.cpp 1 #include < unistd.h > 2 #include < stdio.h > 3 #include < stdlib.h > 4 5 int main (int argc, char * argv []) 6 {7 if (argc < 2) 8 {9 perror (" no tiene, t ingresa el nombre de archivo, por favor intente nuevamente! \\ n "); 10 exit (EXIT_FAILURE); 11 12} 13 if (execl (" ./file_creat ", " file_creat ", argv [1], NULL) < 0) 14 perror (" execl error! "); 15 return 0; 16} 17 root @ wl-MS-7673: /home /wl /desktop /c ++ # cat -n file_creat.cpp 1 #include < stdio.h > 2 3 #include < stdlib .h > 4 5 #include < sys /types.h > 6 #include < sys /stat.h > 7 #include < fcntl.h > 8 void create_file (char * filename) 9 {10 if (creat ( Nombre de archivo, 0666) < 0) 11 {12 printf (" ¡cree el archivo% s error! \\ N " nombre de archivo); 13 exit (EXIT_FAILURE); 14 } 15 else 16 {17 printf (" crea el archivo% s éxito! \\ N " nombre de archivo); 18} 19} 20 21 int main (int argc, char * argv []) 22 {23 if (argc < 2) 24 {25 printf (" no ha ingresado el nombre de archivo, inténtelo de nuevo! \\ N "); exit (EXIT_FAILURE); 27} 28 create_file (argv [1]); 29 exit (EXIT_SUCCESS); 30} 31 32 root @ wl-MS-7673: /home /wl /desktop /c ++ # g ++ execl_test.cpp -o execl_testroot @ wl-MS-7673: /home /wl /desktop /c ++ # g ++ file_cfile_copy file_copy.cpp file_creat.cpp root @ wl-MS-7673: /home /wl /desktop /c ++ # g ++ file_creat.cpp -o file_creatroot @ wl-MS-7673: /home /wl /desktop /c ++ # ./execl_test no tiene, ingrese el nombre del archivo, ¡Inténtalo de nuevo !: Successroot @ wl-MS-7673: /home /wl /desktop /c ++ # ./execl_test archivo de archivos exitosos! Root @ wl-MS-7673: /home /wl /desktop /c ++ #
Primero, la arquitectura de hardware del sistema de interrupción: arm cortex-A9, el controlador de
Hay muchos mensajes en la red sobre cómo instalar el método de entrada Sogou en Ubuntu, pero parece
en la parte posterior de un contenedor recientemente jugó ventana acoplable en la máquina virtual b
Montar el directorio compartido de windows en Linux 1. Compartir la carpeta de windows
Cómo usar enlaces blandos para resolver problemas de transferencia de directorios en Linux
Cómo utilizar Linux para conectarse de forma anónima: Cuatro armas mágicas
Linux compartido wifi a teléfono Android
Configuración de permisos de directorio raíz del sitio web
Descripción del comando para suspender (en espera) en Linux
Modifique la línea de la línea de comandos del comando linux longitud de la ruta
9 comandos de Linux que deben ser atendidos antes de usar
Descriptores de archivo en la programación del servidor
Análisis y métodos de reparación de la corrupción del sistema de archivos de Linux
¿Dónde está el cierre de Windows 8?
Pasos detallados para montar archivos compartidos de Windows en Linux
¿Qué debo hacer cuando solicito una conexión no cifrada cuando el telnet remoto de Oracle Linux 5?
Menú del botón derecho sobre Win10 Cómo administrar
¿Cómo configurar win10 fast start?
Cómo resolver el uso compartido de archivos del sistema operativo Windows XP
Win8 system play iQiyi error 504 ¿Cómo resolverlo?
Win9 captura de pantalla del sistema de exposición
Configuración de almacenamiento de Win10 Mobile Preview 10581 /tarjeta SD ¿Cómo hacerlo?