duda sobre comando system

Iniciado por Unvoid, 27 Octubre 2020, 10:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Unvoid

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!!

Danielㅤ

¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Unvoid

Cita de: 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

[YouTube=640,360]https://youtube.com/watch?v=yIe_9lqng2I[/Youtube]


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

EdePC

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 &):

#include <stdio.h>
#include <windows.h>

int main() {

  system("PATH %PATH%;C:\\Program Files\\Google\\Chrome\\Application; & chrome.exe");

  getchar();
  return 0;
}

Unvoid

Cita de: 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 &):

#include <stdio.h>
#include <windows.h>

int main() {

  system("PATH %PATH%;C:\\Program Files\\Google\\Chrome\\Application; & chrome.exe");

  getchar();
  return 0;
}


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!!