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

334
Vistas
¿Cómo abro un archivo con mi propio programa y hago que invoque otro programa?

tarea:
Me gustaría crear mi propia extensión de archivo para que cuando haga clic en un archivo de "punto" en particular, mi programa lo abra. Sin embargo, este programa que escribí, es solo un intermediario en el sentido de que realizará algún procesamiento, pero finalmente pasará ese archivo a otro programa para su procesamiento.

ejemplo:
Entonces, por ejemplo, todos los archivos de texto sin formato con la extensión .foo aparecerán como si se estuvieran abriendo con gedit . Pero lo que realmente sucede es que se están abriendo con uno de mis programas y, a su vez, mi programa pasa ese archivo a gedit .

mi programa c ++ para hacer esto, se ve así:

 #include <string> #include <cstdlib> int main(int argc, char** argv) { //open file with gedit system(("(gedit " + std::string(argv[1]) + " > /dev/null &)").c_str()); //do other processing //... }

Creo que cuando hace clic en un archivo y el sistema operativo le dice que se abra con cierto programa, ese nombre de archivo se pasa a un programa c ++ como el segundo argumento de ese programa (como índice 1, ya que el índice cero es el programa) nombre). El & es para que gedit se ejecute como un proceso en segundo plano, y el extra () alrededor de la declaración asegura que gedit no se cerrará cuando se cierre el shell principal.

problema:
Dicho todo esto, este programa funciona correctamente cuando tengo el archivo binario en una carpeta que aparece en mi variable $PATH y ejecuto el programa desde la línea de comando pasando el archivo como si se hubiera hecho clic en él. Sin embargo, no funciona cuando configuro el archivo para que se abra con el programa.

cómo he configurado la ejecución de un programa en el archivo, haga clic en:
Ejecuté el script que se encuentra en la respuesta de esta pregunta ,
y el programa SÍ aparece cuando hago Right Click->Properties->Open Withingrese la descripción de la imagen aquí
pero nada parece suceder cuando hago clic en el archivo. Incluso puse el programa en un bucle infinito y verifiqué si se estaba ejecutando como un proceso, pero no fue así. ¿Por qué no se llama al programa en absoluto? ¿O recibe una llamada y simplemente cierra de inmediato por alguna razón? ¿Ese script no hace todo lo que necesitaba? ¿Hay pasos adicionales que debo tomar? ¿Debo intentar registrar el programa y asociarlo con la extensión del archivo de otra manera?

Estoy en Ubuntu.

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

0

Puede abrir una terminal e investigar el entorno:

 int main(int argc, char** argv) { std::system("gnome-terminal"); }
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