Working of exec family of functions


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Working of exec family of functions
# 1  
Old 05-10-2013
Working of exec family of functions

Hi,
I am studying exec family of functions.Its man page says,it replaces the current process image with a new process image. If it replaces the binary,then after returning back,how does it get the previous parameters of the process which called exec?As replacing process image means replacing all its memory sections.
Thanks
Radha
# 2  
Old 05-10-2013
A successful exec call replaces the current program with another program. We can't get back to the previous executable. If you want keep both processes, you may use vfork() and then exec().
# 3  
Old 05-13-2013
I have some part of code like I have a loop for(index = 0; index < SOME_MAX_VAL;index++) { exec(SOME_EXECUTABLE,index); } then where the value of argument index will be stored, i.e. after returning from exec executable,how it will get index?
# 4  
Old 05-13-2013
You don't seem to grasp a very fundamental aspect of the exec family of functions: if an invocation succeeds, it can never return, because there is nothing to return to, because what had been there has been replaced.

With that in mind, unless the intent is to blindly retry after an exec failure, your loop is absolutely pointless.

In case you are wording your question badly, the index is made available to SOME_EXECUTABLE via argv.

Regards,
Alister
# 5  
Old 05-13-2013
Perhaps this kind of model serves your purpose.
Every time fork a child process, where it loads the executable with index as argument.
Parent process continues looping on index value.
Code:
for(index = 0; index < SOME_MAX_VAL;index++)
{
  pid = fork();
  if( pid > 0 )
    continue;
  else
    exec(SOME_EXECUTABLE,index);
}

NOTE: Please use the code tags, when you are exemplifying with code snippets.
# 6  
Old 05-13-2013
I consider that code dangerous because, when exec fails, the child code will fall into that same loop and start making its own child processes, which will start making their own child processes -- a forkbomb. Always put an exit() after your exec()'s, just in case!

Code:
for(index = 0; index < SOME_MAX_VAL;index++)
{
  pid = fork();
  if( pid > 0 )
    continue;
  else
  {
    exec(SOME_EXECUTABLE,index);
    perror("exec failed");
    exit(1);
  }
}

These 2 Users Gave Thanks to Corona688 For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Simple shell running with exec family

# Erroneous question, so can be removed. (0 Replies)
Discussion started by: beginnerboy
0 Replies

2. Shell Programming and Scripting

Menu with working functions

I am creating a menu currently that makes use of functions to complete each selected option but running into a bit of trouble calling them into action still fairly new with using functions correctly so any insight is appreciated. here is my code so far #!/bin/bash #Last updated on 05/14/14 ... (4 Replies)
Discussion started by: Backtickcruise
4 Replies

3. Programming

Working of exec family of functions

Hi, I am studying exec family of functions.Its man page says,it replaces the current process image with a new process image. If it replaces the binary,then after returning back,how does it get the previous parameters of the process which called exec?As replacing process image means replacing all... (1 Reply)
Discussion started by: Radha.Krishna
1 Replies

4. Shell Programming and Scripting

How to execute functions or initiate functions as command line parameters for below requirement?

I have 7 functions those need to be executed as command line inputs, I tried with below code it’s not executing function. If I run the ./script 2 then fun2 should execute , how to initiate that function I tried case and if else also, how to initiate function from command line if then... (8 Replies)
Discussion started by: saku
8 Replies

5. Shell Programming and Scripting

Script Variables Inquiry, Values Okay in Standalone Exec, No-Show in Cron Exec

I have the following bash script lines in a file named test.sh. #!/bin/bash # # Write Date to cron.log # echo "Begin SSI Load $(date +%d%b%y_%T)" # # Get the latest rates file for processing. # d=$(ls -tr /rms/data/ssi | grep -v "processed" | tail -n 1) filename=$d export filename... (3 Replies)
Discussion started by: ginowms
3 Replies

6. Shell Programming and Scripting

basename not working as expected from find -exec

I have the following files in a directory > ls -1 /tmp/test/dir/ file with spaces 1.ogg file with spaces 2.oggI am running the following to echo the filenames but alter the file extension on the files to .mp3 instead of .ogg ( I am going to run ffmpeg against the files ultimately, but keeping... (2 Replies)
Discussion started by: jelloir
2 Replies

7. Shell Programming and Scripting

stdout redirect is working buy direct script exec but not in cron

Hi @ all :) i made a very little shell script witch is working well when i'm launching it directly like with ./script but when i'm launching it by cron tab it work at half only. the part of the script witch are not working are: #!/bin/sh apt-get updade apt-get -s upgrade >>... (5 Replies)
Discussion started by: calibal
5 Replies

8. Programming

help me understand exec() family of calls...

how does exec() do it? on successful call of exec() family of functions, they never return... how to i emulate that. assume the standard example, execl("/bin/ls","ls",NULL); now this would never return. i m trying to emulate exec()'s never to return feature... #include<unistd.h>... (4 Replies)
Discussion started by: c_d
4 Replies

9. OS X (Apple)

Address family not supported by protocol family

Hi, I compiled with no error a C program, than I tryed to execute it and than I get this error: connessione al server fallita: Address family not supported by protocol family What does it mean? Why I get this error only on Mac os x while on Ubuntu the program works? The code is:... (3 Replies)
Discussion started by: DNAx86
3 Replies

10. UNIX for Dummies Questions & Answers

functions not working

I have the following functions but when I run SelectQmgr from a Menu Selection it doesn't do anything. SelectQmgr () { qmgrlist=`ls /var/mqm/qmgrs/ | grep -v @SYSTEM` qmgrcount=`ls /var/mqm/qmgrs/ | grep -v @SYSTEM | wc -l` if then echo "$qmgrlist QManager will be used " ... (7 Replies)
Discussion started by: darthur
7 Replies
Login or Register to Ask a Question