Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

192
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!