How do I execute a Shell built-in command with a C function? How do I execute a Shell built-in command with a C function? shell shell

How do I execute a Shell built-in command with a C function?


If you just want to execute the shell command in your c program, you could use,

   #include <stdlib.h>   int system(const char *command);

In your case,

system("pwd");

The issue is that there isn't an executable file called "pwd" and I'm unable to execute "echo $PWD", since echo is also a built-in command with no executable to be found.

What do you mean by this? You should be able to find the mentioned packages in /bin/

sudo find / -executable -name pwdsudo find / -executable -name echo


You should execute sh -c echo $PWD; generally sh -c will execute shell commands.

(In fact, system(foo) is defined as execl("sh", "sh", "-c", foo, NULL) and thus works for shell built-ins.)

If you just want the value of PWD, use getenv, though.


You can use the excecl command

int execl(const char *path, const char *arg, ...);

Like shown here

#include <stdio.h>#include <unistd.h>#include <dirent.h>int main (void) {   return execl ("/bin/pwd", "pwd", NULL);}

The second argument will be the name of the process as it will appear in the process table.

Alternatively, you can use the getcwd() function to get the current working directory:

#include <stdio.h>#include <unistd.h>#include <dirent.h>#define MAX 255int main (void) {char wd[MAX];wd[MAX-1] = '\0';if(getcwd(wd, MAX-1) == NULL) {  printf ("Can not get current working directory\n");}else {  printf("%s\n", wd);}  return 0;}