Duda funcion "SYSTEM", ¿porque funciona con unos comandos y con otros no?

Iniciado por BlerofonT, 5 Julio 2012, 13:21 PM

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

BlerofonT

Buenas a tod@s!!!

el problema que tengo es que estaba aprendiendo a usar la funcion SYSTEM la cual en principio no la encontre mucha dificultad. Pues bien, yo tengo Windows 7 asike mire en internet la lista de comandos para windows 7 y cree un programa en Dev-C++ que solo haria llamadas a SYSTEM (era inutil el programa, pero solo era para probar). Mi sorpresa fue cuando me di cuenta que con algunos comando funciona (como por ejemplo los tipicos "cls", "pause", "del"...)pero con otros no("cd.."y especialmente el que me molesta mas que no funcione es "exit"). ¿Alguien sabe porque al ejecutar system("exit") no m salgo del interprete de comandos y continua con el printf?¿porque no funciona el system("cd..")?

Aqui os dejo el codigo, aunque no creo q tenga mucho interes...

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main (void){
    printf ("\nHola\n\n\n");
    system ("dir");
    system ("pause");
    system ("del name.txt");
    system ("pause");
    system ("cd..");
    system ("dir");
    system ("pause");
    system ("exit");/*NO SALE DEL INTERPRETE DE COMANDOS Y CONTINUA CON EL printf */
    printf ("\nAdios\n\n");
    system ("pause");
}



Gracias

Saberuneko

El exit probablemente no te funcione porque tu programa no ha terminado, creo que para hacer eso en particular necesitarás que el programa finalice, en vez de usar el exit de system.

El pause realmente no lo necesitas, ya que puedes crear una pausa con un getchar();

Respecto a los comandos de directorio, ¿te sale algún tipo de error o hace algo? ¿o simplemente te los está ignorando?.

Un Saludo.

BlerofonT

Pues te comento Saberuneko:

a) Respecto al system("pause"): tienes toda la razon y yo siempre uso el getchar() , pero estaba estudiando la funcion SYSTEM y solo lo hice para probar, pero yo recomiendo el getchar()

b) En el programilla que puse antes:
funcionan: el system("dir")(que me preguntabas), system("pause") y system("del name.txt")
no funcionan(les ignora completamente y NO dan error): el system("cd..")y el system("exit")

c) Alguien tiene alguna otra teoria acerca de porque me ignora el system("exit")???

Gracias a todos!!!

durasno

Hola! por lo poco que se te puedo decir esto: el exit si esta funcionando, pero por que no termina el programa??? eso se debe a que al usar system abris otro proceso(ademas del que ya tenias), entonces al querer ejecutar system("exit"); estas cerrando ese proceso abierto y continua con el proceso del programa en C

Creo que mas o menos esta es la respuesta(bien a lo bestia). Saludos
Ahorrate una pregunta, lee el man

BlerofonT

Hola Durasno!!!

Pues sigo sin entender lo del "exit"... Durasno puedes explicar mas concretamente que entiendes por proceso?? Y alguien mas sabe porque no funciona el el system("exit") o system("cd..")??

durasno

Que no puedas visualizarlo no significa que no ande, sino tendrias que tener un error en el programa. Tal vez podria explicarte un poquito mejor el tema de procesos, pero de todos modos estamos entrando en un tema mas alla de lo que en si es la programacion en C.

Lo mejor es que esperes otra respuesta, ya que como te dije antes nose mucho sobre procesos y seguro no me vas a entender :S  (y ademas la respuesta que te di nose si es la correcta)


Saludos
Ahorrate una pregunta, lee el man

BlerofonT

Cita de: durasno en  6 Julio 2012, 00:58 AM
Que no puedas visualizarlo no significa que no ande, sino tendrias que tener un error en el programa. Tal vez podria explicarte un poquito mejor el tema de procesos, pero de todos modos estamos entrando en un tema mas alla de lo que en si es la programacion en C.

Lo mejor es que esperes otra respuesta, ya que como te dije antes nose mucho sobre procesos y seguro no me vas a entender :S  (y ademas la respuesta que te di nose si es la correcta)


Saludos

OK!! Gracias de todas formas. A ver si alguien se anima ;)

Saberuneko

Te aconsejo que no tires mucho de las funciones SYSTEM, que a parte de no ser compatibles con otros sistemas, suelen dar esta clase de problemas a menudo.

Te dejo aquí una alternativa más viable.

Funciones de Terminación:
http://www.zator.com/Cpp/E1_5_1.htm

HdM

Buenas.

Yo creo, como te han indicado, que por cada llamada que haces a system, éste se ejecuta de manera independiente al resto de llamadas a system que puedas haces. Por eso aparentemente parece que no te funcionen algunos comandos, cuando realmente si están funcionando. ¿Has probado a concatenar varios comandos en una sola llamada? Por ejemplo:

system("dir & PAUSE & cd.. & dir & pause & cls & pause");

Verás como todos los comandos funcionan.

Con respecto a system("exit"), realmente lo que creo que hace es cerrar la consola que acabas de abrir mediante system (que ya de por si, se cierra al terminar los comandos que se le pasasen. De modo que creo que no tiene sentido, aunque es posible que me equivoque, utilizar exit). Por eso no se cierra tu programa.

Saludos.

- Nice to see you again -