yaegerbomb yaegerbomb - 9 months ago 71
Linux Question

Changing working directories in Linux shell in a C program

My goal is to write a C program that is like a basic shell for Linux. I have everything working except changing working directories. I have tried the

for input strings for
and nothing happened. I also tried
chdir("tokened string")
and also no luck. Anyone have any ideas? This is part of my code:

fgets(cmdStr, sizeof(cmdStr), stdin);

if( strncmp("quit", cmdStr, 4) == 0 || strncmp("Quit", cmdStr, 4) == 0 )
else if( strncmp("cd", cmdStr, 2) == 0 )
char *token = strtok(cmdStr, " ");
token = strtok(NULL, " ");

Is it possible to do this? Or is this a simple case of something to do with the child shell not being able to do certain things?

Edit: Code above is complete.


fgets() leaves the trailing '\n' character in cmdstr.

If you type cd foo, you'll call chdir("foo\n") rather than chdir("foo").