Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 0xDani en 11 Agosto 2012, 14:59 pm



Título: Iniciar una aplicacion con linux.
Publicado por: 0xDani en 11 Agosto 2012, 14:59 pm
Bueno pues me pregunto si existe algo parecido al registro de windows en linux, y como se registrarian aplicaciones en el, para que se inicien al iniciar el ordenador. En mi ubuntu hay una opcion para configurar las aplicaciones que se van a iniciar cuando se inicie el SO, de lo que deduzco que debe haber alguna forma de hacerlo en C/C++, pero no he encontrado nada googleando.

Saludos.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: Risketo en 11 Agosto 2012, 15:38 pm
Lo que se me ocurre es que hagas un bash con permisos de ejecucion que llame a tu programa en c y pongas ese bash en la opcion de aplicaciones al inicio.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: 0xDani en 11 Agosto 2012, 15:55 pm
Ya, claro, pero para eso pongo mi programa en aplicaciones al inicio directamente. El problema es que yo quiero hacerlo con codigo, no desde la interfaz. Gracias de todas formas.



Título: Re: Iniciar una aplicacion con linux.
Publicado por: xiruko en 11 Agosto 2012, 17:27 pm
para hacerlo desde codigo podrias mirar estas funciones:
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/exec.htm (http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/exec.htm)

aunque extrayendo el siguiente parrafo de aqui:
"Running a shell command in a child process is generally more useful than simply using the exec subroutine, as shown in this example. The simplest way to do this is to use the system subroutine."

yo entiendo que para solo correr un comando de terminal en el programa, lo mejor es usar system().

y para que arranque, pues no uso linux asi que no puedo probarlo, pero podrias probar lo que se dice aqui:
http://stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu (http://stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu)

un saludo!


Título: Re: Iniciar una aplicacion con linux.
Publicado por: yoxter en 12 Agosto 2012, 05:40 am
déjame entender lo que quieres, desde c++ hacer una configurarcion que te inicia una app en linux ?

eso depende del entorno gráfico en el que usuario este y todos los que conozco tienen un archivo de configuración para aplicaciones de inicio, algunos requieren permiso de usperuser para editarse y lo otro que funciona en cualquier linux seria editar los init levels. o si lo que quieres es crear algo como un modulo de kernel recurre a modprobe y insmod.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: Foxy Rider en 12 Agosto 2012, 10:21 am
Citar
Bueno pues me pregunto si existe algo parecido al registro de windows en linux

No, por dior, no !!! x'D
(ok, si mal no recuerdo la gente de GNOME tiene algo parecido, lol ... con "limpiador de registro"  y todo, eww )

Citar
y como se registrarian aplicaciones en el, para que se inicien al iniciar el ordenador.

Podés armar un init script, usar /etc/profile (esto es medio puerco) ... o los archivos en el home del usuario, como .profile, .login y los rc (como .bashrc, .xinitrc, etc ..)

Saludos.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: The Swash en 12 Agosto 2012, 22:31 pm
Hola,

Copias tu archivo en "/etc/init.d", no olvides darle permisos de ejecución. Luego editas el archivo "/etc/rc.local" y añades la línea que ejecute tu archivo en "/etc/init.d" (/etc/init.d/archivo).

Un saludo,
Iván Portilla.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: Foxy Rider en 13 Agosto 2012, 00:03 am
Hola,

Copias tu archivo en "/etc/init.d", no olvides darle permisos de ejecución. Luego editas el archivo "/etc/rc.local" y añades la línea que ejecute tu archivo en "/etc/init.d" (/etc/init.d/archivo).

Un saludo,
Iván Portilla.

Si, en los sistemas que tengan ESE sistema de inicio. como sabrás, hay BSD init y System V, sumado a upstart, systemd, etc ...
Lo óptimo es tocar los rc del usuario y usar locking, salvo que quieras lidiar con todos los sistemas de inicio que hay en linux.

Saludos.

P.S → Si lo hicieses así, en esta computadora no correría tu soft :B


Título: Re: Iniciar una aplicacion con linux.
Publicado por: 0xDani en 13 Agosto 2012, 14:15 pm
Vale, entonces voy a seguir investigando un poco, por que por lo que veo en cada sistema se inicia de una forma distinta, asi que a ver si lo puedo hacer portable para todos. Voy a investigar que sistema de inicio tiene Ubuntu, y despues lo ire adaptando.

Saludos.



Título: Re: Iniciar una aplicacion con linux.
Publicado por: Foxy Rider en 16 Agosto 2012, 13:18 pm
Vale, entonces voy a seguir investigando un poco, por que por lo que veo en cada sistema se inicia de una forma distinta, asi que a ver si lo puedo hacer portable para todos. Voy a investigar que sistema de inicio tiene Ubuntu, y despues lo ire adaptando.

Saludos.



Es un lindo aprendizaje ese (es la manera "elegante" de integrarse al sistema), pero si tenés ganas de tener funcionando algo YA (inelegante, pero aún así, está bastante bien) ... podés tomar el atajo que te mencioné : "Lo óptimo es tocar los rc del usuario y usar locking

Saludos.

P.S → Lo de la respuesta de init fue para swash ... como una forma de decir que no es lo óptimo, salvo que quieras hacer un soft BIEN armado, y a costa de eso quieras lidiar con todas las diferentes implementaciones de inits (por que para soportar uno solo, mejor ni dar soporte a init, y hacerlo con lockfiles y no dejar a nadie a fuera, por inelegante que sea)


Título: Re: Iniciar una aplicacion con linux.
Publicado por: 0xDani en 16 Agosto 2012, 14:22 pm
He encontrado esto buscando sobre los sistemas de inicio: http://www.ite.educacion.es/formacion/materiales/85/cd/REDES_LINUX/varios/CosasVarias.html
Despues de pensar las preguntas son: ¿Si lo hago llamando a system() con el comando update-rc.d esta bien o es muy inelegante? ¿Podrias ampliarme lo de tocar los rc del usuario y usar locking? y si no dar soporte a init y usar lockfiles(esto ultimo tampoco lo he entendido mucho) no deja fuera a nadie, ¿porque es inelegante?

Saludos y gracias por las respuestas.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: Foxy Rider en 17 Agosto 2012, 23:22 pm
Fijate este ejemplo → http://rosettacode.org/wiki/Determine_if_only_one_instance_is_running#C

Saludos.


Título: Re: Iniciar una aplicacion con linux.
Publicado por: 0xDani en 18 Agosto 2012, 13:27 pm
Entonces, eso es usar locking? Asi que, tocar los rc del usuario y usar locking debe ser algo como usar todos los archivos de inicio de todos los sistemas para asegurar que se inicie en todos los sistemas y usar locking para asegurarse que corra una sola instancia del programa. ¿He dado alguna? :rolleyes:

Saludos.