Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Unvoid en 27 Octubre 2020, 10:20 am



Título: duda sobre comando system
Publicado por: Unvoid en 27 Octubre 2020, 10:20 am
Hola! estoy empezando con la programacion en C y tengo una duda sobre el comando system.

en principio con las ordenes sencillas me funciona pero cuando he intentado hacer un programa que simplemente añadiera chrome a mis variables de entorno para poder ejecutar chrome desde la consola.
el
system("PATH %PATH% C:/blablabla");

no se me ejecuta, por lo que el siguiente comando como es logico (system("chrome.exe");
pues no lo puede ejecutar.

He buscado pero no consigo saber la razon por la que no funciona si en teoria el comando lo que hace es pasarle la orden a la shell.

gracias!!


Título: Re: duda sobre comando system
Publicado por: Danielㅤ en 27 Octubre 2020, 13:38 pm
Hola, hay alternativas para ejecutar órdenes al sistema:

https://es.m.wikipedia.org/wiki/Execve

http://manpages.ubuntu.com/manpages/artful/es/man3/exec.3.html

http://sopa.dis.ulpgc.es/prog_c/PROCES.HTM

yIe_9lqng2I


Saludos


Título: Re: duda sobre comando system
Publicado por: Unvoid en 27 Octubre 2020, 15:38 pm
Hola, hay alternativas para ejecutar órdenes al sistema:

https://es.m.wikipedia.org/wiki/Execve

http://manpages.ubuntu.com/manpages/artful/es/man3/exec.3.html

http://sopa.dis.ulpgc.es/prog_c/PROCES.HTM

yIe_9lqng2I


Saludos

hola!
gracias por tu respuesta, por lo que veo ese comando que dices es para sistemas UNIX, yo en principio estaba haciendo el codigo en windows :P


Título: Re: duda sobre comando system
Publicado por: EdePC en 27 Octubre 2020, 15:42 pm
Saludos,

En Windows tienes que considerar que cada llamada a system() es como ejecutar una nueva cmd.exe con la instrucción dada, también que el cambio en la variable de entorno Path es temporal y solo es válido para esa cmd.exe ejecutada.

Entre las muchas soluciones que hay puedes hacer lo siguiente dependiendo de tus requerimientos:

- Editar el Path de manera permanente (SetX o haciendo el cambio en el Regedit)

- Agregar la entrada en Regedit como aplicación conocida (HKCU\Software\Microsoft\Windows\CurrentVersion\App Path), para que sea llamada con Start o Ejecutar

- Ejecutar instrucciones en cadena (con &):

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main() {
  5.  
  6.  system("PATH %PATH%;C:\\Program Files\\Google\\Chrome\\Application; & chrome.exe");
  7.  
  8.  getchar();
  9.  return 0;
  10. }


Título: Re: duda sobre comando system
Publicado por: Unvoid en 27 Octubre 2020, 16:21 pm
Saludos,

En Windows tienes que considerar que cada llamada a system() es como ejecutar una nueva cmd.exe con la instrucción dada, también que el cambio en la variable de entorno Path es temporal y solo es válido para esa cmd.exe ejecutada.

Entre las muchas soluciones que hay puedes hacer lo siguiente dependiendo de tus requerimientos:

- Editar el Path de manera permanente (SetX o haciendo el cambio en el Regedit)

- Agregar la entrada en Regedit como aplicación conocida (HKCU\Software\Microsoft\Windows\CurrentVersion\App Path), para que sea llamada con Start o Ejecutar

- Ejecutar instrucciones en cadena (con &):

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main() {
  5.  
  6.  system("PATH %PATH%;C:\\Program Files\\Google\\Chrome\\Application; & chrome.exe");
  7.  
  8.  getchar();
  9.  return 0;
  10. }

dios eso era, que cada comando es una cmd distinta.
mil gracias, sabia que el comando que estaba poniendo solo era temporal pero no habia caido en eso de diferentes consolas, ahora tiene todo el sentido del mundo  :laugh:
muchas gracias!!