Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

changing the directory from inside a c program under windows using system command

I have a problem where I have to run a command prompt command from inside a C program. Here is what I did

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


int main(){



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

}

The problem is I want to cd into Users first and then execute the command Dir where as currently the program outputs that it cant find the path specified and the Dir is executed in the parent process directory i-e where the program source file is located.

The actual task I want to do is just want to run a java file from a particular directory from inside a C program. that java file is in C:\Users\Abdullah\pro . My C program's parent directory is C:\Users\Cprog. Please advise on how may I do this

like image 582
Abdullah Avatar asked May 30 '12 07:05

Abdullah


People also ask

How do I change directory to C program files?

While in the command prompt type "cd\", then enter. From there type "cd\program" then hit the tab button until you see "c:\program files (x86)", then hit enter.

Which command is used to change the directory?

Use the cd command to move from your present directory to another directory. You must have execute (search) permission in the specified directory.


2 Answers

system() starts a new process. This new process changes its current directory, then ends. The current directory of your program's process does not change.

You want chdir() (or _chdir()).

like image 143
Ignacio Vazquez-Abrams Avatar answered Oct 05 '22 06:10

Ignacio Vazquez-Abrams


Your program has some incorrect assumptions. First of all, "cd" and "dir" are not programs, but commands built into the shell, cmd.exe. Second, I suspect you don't need to change the current directory at all.

Either way, since this is a Windows system, I would look at an example on how to start a program with CreateProcess().

For changing the current directory, check out the lpCurrentDirectory parameter of the CreateProcess() call.

like image 26
Prof. Falken Avatar answered Oct 05 '22 06:10

Prof. Falken