2010-02-22 3 views
2

Я хочу, чтобы процесс работал с exec. Когда команда exec запускается, я хочу, чтобы процесс, который вызвал процесс, вызывающий exec, получал в качестве возвращаемого значения значение, вызванное функцией, вызванной exec. Как это возможно?Получение возвращаемого значения процесса exec

Прошу прощения. Я понимаю, что этот процесс немного запутан. Итак, позвольте мне привести пример, который я использую в сценарии bash, назовите его b_scr.

В b_scr я вызываю программу foo. В свою очередь foo вызывает exec, который выполняет bar. Я хочу, чтобы b_scr получал как возвращаемое значение foo, возвращаемое значение bar.

Так в b_scr:

# Call foo 
foo 
# print return value of foo. 
echo $? 

bar 
# should be the same value as printed before. 
echo $? 

обув

... INT основной() { ...

exec("bar",0); 

}

ответ

3

Извините, ваш вопрос все еще не очень ясен. Вы хотите, чтобы foo имел тот же код выхода, что и bar? Нужно ли делать что-либо после выхода из бара?

exec() полностью заменит выполняемый процесс, поэтому, если вы позвоните по номеру exec() без первого звонка fork(), тогда foo будет заменен на бар, и поэтому код выхода будет возвращаться к любой строке.

Если вы хотите Foo позвонить бар, и после того, как бар выходов, сделать что-то, вам нужно fork(), а затем wait():

int main() { 
  int status; 
  if (fork()) { 
    wait(&status); 
  } else { 
    exec("bar", 0); 
  } 
  // do whatever else here 
  return status; 
}
Смежные вопросы