Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
¿Puede un archivo moverse solo en C?

Estoy tratando de hacer que un archivo se instale solo en el sistema (linux).

Todos los métodos que uso (renombrar, sistema (mv), execl, etc.) fallan. ¿Hay alguna forma de hacer que un ejecutable en ejecución se mueva mientras se ejecuta? Lo más cerca que he llegado es cambiarle el nombre, pero solo dentro del mismo directorio.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El siguiente código se "copia" a sí mismo en un nuevo destino y se elimina después de la terminación. Básicamente, el código crea una nueva entrada (vínculo fijo) en la ubicación especificada y elimina la actual (del directorio de llamadas). El contenido del archivo se conservará, ya que no hay copia y borrado involucrados.

 #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <libgen.h> int main(int argc, const char *argv[]) { //current filepath (dir + name) const char* file_path = argv[0]; //extract filename component (needed to append to newdir) char* file_name_ = strdup(file_path); char* file_name = basename(file_name_); //make new path name char* new_dir = "<put your destination here - with no slash ('/') at the end>"; size_t new_path_len = strlen(new_dir) + strlen(file_name) + 2; //two extra bytes: '/' + '\0' char new_path[new_path_len]; snprintf(new_path, new_path_len, "%s/%s", new_dir, file_name); //make a new name for a file (hardlink) link(file_path, new_path); //delete a name and possibly the file it refers to unlink(file_path); //cleanup free(file_name_); return 0; }

Sugerencia: se recomienda encarecidamente un estudio cuidadoso de la documentación a link (especialmente la sección de ERRORES ).

Referencias:

basename - analiza los componentes del nombre de la ruta
link - crea un nuevo nombre para un archivo
desvincular : elimina un nombre y posiblemente el archivo al que se refiere

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda