Using execve

execve() is a function used to launch a process from with in another process.

The sytax of the function is :


The executable pointed to by "filename" replaces the current process. The function execve never returns to the calling function unless there is an error in executing the executable.

For example:

Let us write a program to print hello world and try to execute this from another program using execve.



In the above program we are calling an executable "hello" and passig no arguments to it. We said that the execve never returns to the calling function if there is no error, to confirm this we have added a print statement after execve which should not get printed if the call is successful.

Now compile both the programs, make sure that the executable of hello.c is named as hello.

Execute the execve


Passing arguments:

To pass arguments in execve, we can make use of the second argument which is a pointer to an array of pointers.

For example

Let us modify the above hello.c to accept these arguments


Compile and execute them as shown above and we should see the output

But the standard convention is to always pass the executable itself as the first argument and only then pass the other arguments. Thus to follow the convention we can modify the code as below.


Executing a script

execve can also be used to run scripts that start with the line #! pointing to an interpreter.

For example

save the script as and give it execute permissions.

Compile and execute the program execve.c and we should see the output

No comments:

Post a Comment

Follow by Email