2012-05-30 63 views
7

Tengo un problema donde tengo que ejecutar un comando del símbolo del sistema desde dentro de un programa C. Esto es lo que hicecambiando el directorio desde dentro de un programa c en windows usando el comando del sistema

#include<stdio.h> 
#include<stdlib.h> 


int main(){ 



system("cd \Users"); 
system("Dir"); 

} 

El problema es que quiero CD en los usuarios primero y luego ejecutar el comando Dir, donde en la actualidad los productos de los programas que no puede encontrar la ruta especificada y la Dir se ejecuta en el proceso padre directorio, es decir, donde se encuentra el archivo fuente del programa.

La tarea real que quiero hacer es solo querer ejecutar un archivo java desde un directorio particular desde dentro de un programa C. ese archivo java está en C: \ Users \ Abdullah \ pro. El directorio principal de mi programa C es C: \ Users \ Cprog. Aconsejar sobre cómo puedo hacer esto

+0

Por favor, echar un vistazo a mi respuesta a continuación. Dígame si ayudó o no, o cualquier otra pregunta que pueda tener después de ver el ejemplo de Microsoft. Nota al margen: ¿Es realmente necesario que el directorio actual también se cambie a ese directorio? –

+0

Gracias por su respuesta. El problema es que el programa que necesito ejecutar en el directorio particular es b ejecutar usando un script. e-g cd en el directorio de trabajo entonces, run.bat --arg1 arg1 --arg2 arg2 etc. Así que no puedo comenzar un proceso para hacer eso, supongo:/ – Abdullah

+1

Actualicé mi respuesta en consecuencia. Consulte http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspx y el parámetro del directorio actual. –

Respuesta

5

Su programa tiene algunas suposiciones incorrectas. En primer lugar, "cd" y "dir" no son programas, sino comandos integrados en el shell, cmd.exe. En segundo lugar, sospecho que no necesita cambiar el directorio actual en absoluto.

De cualquier manera, ya que este es un sistema de Windows, lo haría look at an example on how to start a program with CreateProcess().

Para cambiar el directorio actual, consulte el lpCurrentDirectory parameter de la llamada CreateProcess().

5

system() comienza un nuevo proceso. Este nuevo proceso cambia su directorio actual, luego finaliza. El directorio actual del proceso de su programa no cambia.

Quiere chdir() (o _chdir()).

+0

Alternativamente, puede usar una sola llamada a 'system'. Algo como 'system (" cd \ Users & dir ")' podría funcionar. (Creo que '&' es el carácter requerido. Sería ';' bajo Unix.) –

+1

... o simplemente 'system (" Dir \ Users ");' –

+0

Nada funciona:/o puede ser que soy demasiado tonto . Solo quiero ejecutar un archivo java desde un directorio particular desde dentro de un programa C. ese archivo java está en C: \ Users \ Abdullah \ pro. El directorio principal de mi programa C es C: \ Users \ Cprog. Por favor asesórese sobre cómo puedo hacer esto – Abdullah

0

'cd' NO es un ejecutable independiente que está intentando ejecutar. Normalmente 'cd' es un comando incorporado de shell/command. NO puede ejecutar 'cd' con 'system()' y espera que funcione en consecuencia en su programa. Tendrá que usar la función 'chdir()' (o llamada al sistema) si desea que el cambio de directorio se realice dentro de su programa. Consulte la página del manual para 'chdir()'.

0

Esto debería funcionar:

system("dir Users\\whatEverNextFolder > test.txt"); 
Cuestiones relacionadas