Los programas de Linux generalmente tienen archivos de configuración. Si el archivo de configuración utiliza una ruta relativa, por ejemplo: "../src/config.xml"
, entonces no hay ningún problema en la ruta actual;
Si cambia a otra ruta, hay un problema con la ejecución, no se puede encontrar el archivo;
Al escribir la secuencia de comandos, primero debe ingresar a la ruta donde se encuentra el archivo ejecutable y luego ejecutarlo;
Si desea eliminar este efecto, no puede escribir la ruta muerta, entonces necesita convertir la ruta relativa en una ruta absoluta;
Paso:
1. Primero, obtenga la ruta donde se encuentra el programa.;
2. Agregue la ruta relativa, luego obtenga la ruta absoluta;
Tenga en cuenta: no es la ruta actual, getcwd puede obtener la ruta actual, no la ruta absoluta del programa; estaba en ese momento Este error
A continuación se describe cómo obtener la ruta donde se encuentra el programa:
Método 1. Si no le preocupan los posibles riesgos de seguridad, puede usar procfs, luego readlink, para colocar el pid del proceso actual correspondiente al directorio a continuación. Se lee la ubicación a la que apunta el archivo (tenga en cuenta que primero debe montar procfs)
pit_t mypid = getpid ();
sprintf (strsrc, "/proc /% d /file", mypid);
readlink (strsrc, strdest, LEN); //LEN es mejor su _POSIX_PATH_MAX
Método 2. Utilice la función realpath, luego dirname; finalmente, empalme la ruta absoluta del archivo de configuración; Br>
ruta de caracteres [PATH_MAX];
char * rpath = realpath (argv [0], ruta);
LOG_IT (LOG_MAIN, LOG_DEBUG, "argv [0]:% s, realpath% s ", argv [0], rpath);
char * base = basename (ruta);
char * dir = dirname (ruta);
LOG_IT (LOG_MAIN, LOG_DEBUG, "base:% s, dir% s", base, dir);
char conf_file [2048];
int maxlen_conf = 2048;
snprintf (conf_file, maxlen_conf, "% s /% s ", dir," ../src/config.xml ");
LOG_IT (LOG_MAIN, LOG_DEBUG," conf_file% s ", conf_file);
Ubuntu Como el sistema operativo Linux más popular, Ubuntu se ha vuelto aún más perfecto después del
badblocks es el comando o utilidad en Linux como sistema operativo que puede escanear o probar nuest
¿Cómo utilizar un dispositivo de almacenamiento de interfaz USB en un entorno Linux? Este es un prob
Según informes de medios extranjeros, Linux no parece ser completamente amado por las personas. Los
centOS construir servidor vpn l2tpd
Linux pila del subsistema de barrio (cinco procesos relacionados)
¡Linux nginx admite el archivo .htaccess para implementar el método pseudoestático!
Método de aprendizaje del sistema Linux experiencia cuerpo entrada
Minicom no puede ingresar a la solución del problema
Señales diferenciales y de modo común
Tres grandes tiempos de modificación para archivos Linux
Tres pasos para enseñarle cómo crear una unidad flash de Linux
Explicación detallada de los 7 principales obstáculos de Windows a Linux
¿Cómo optimizar después de instalar el servidor Linux?
¿Cómo entra en conflicto el maestro de uso compartido de WiFi con el cliente del campus?
Sistema Win7 LAN cómo agarrar la velocidad de la red
¿Cómo desactiva Win10 el mantenimiento automático? Win10 de tutorial de mantenimiento automático
¿Qué debo hacer si WinXP no puede acceder a Internet después de abrir Guest?
Cómo ingresar Win10 en modo seguro, presione F8 no ha podido ingresar
Agregue un botón de apagado de un solo botón para la pantalla de inicio y el escritorio de Win8