# Is possible to return after exec cmd?

**URL:** <https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915>\
**Category:** Ruby\
**Created:** [July 11, 2006, 12:37pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915 "2006-07-11T12:37:17Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 12:37pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/1 "2006-07-11T12:37:17Z")

</div>

Hi folks,  
why doesn’t work command 5.times{exec “pwd”} like this 5.times{puts  
“Hello”} ?

ollin

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 12:53pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/2 "2006-07-11T12:53:08Z")

</div>

On 7/11/06, Petr S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi folks,  
> why doesn’t work command 5.times{exec “pwd”} like this 5.times{puts  
> “Hello”} ?
> 
> ollin

exec() starts a new process in place of the current one, i.e. the ruby  
interpreter. Use system() if you want to launch a child process and  
return when it’s finished.

Regards,  
Sean

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 12:53pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/3 "2006-07-11T12:53:16Z")

</div>

Petr S. wrote:

> Hi folks,  
> why doesn’t work command 5.times{exec “pwd”} like this 5.times{puts  
> “Hello”} ?

Because ‘exec’ overwrites the current Ruby process, so when ‘pwd’  
finishes there’s nothing left to run. What you are looking for is  
‘system(“pwd”)’ or “`pwd`”.

Greets, Markus

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 12:56pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/4 "2006-07-11T12:56:37Z")

</div>

On 7/11/06, Petr S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi folks,  
> why doesn’t work command 5.times{exec “pwd”} like this 5.times{puts  
> “Hello”} ?

Because exec (as in the shell BTW) replaces your process with the  
program  
passed as argument. That is the ruby interpreter is replaced by pwd.  
What you want is probably system  
5.times{ system “pwd” }

Cheers  
Robert

ollin

> –  
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

–  
Deux choses sont infinies : l’univers et la bÃªtise humaine ; en ce qui  
concerne l’univers, je n’en ai pas acquis la certitude absolue.

- Albert Einstein

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 12:56pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/5 "2006-07-11T12:56:53Z")

</div>

fr ollin:

# why doesn’t work command 5.times{exec “pwd”} like this 5.times{puts

# “Hello”} ?

since that is exec’s feature. exec replaces current process.

maybe you want system or `

irb(main):004:0\> `echo am still here`  
=\> “am still here\n”  
irb(main):005:0\> system “echo am still here”  
am still here  
=\> true

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 1:24pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/6 "2006-07-11T13:24:07Z")

</div>

Thanks to all,  
example 5.times{ system “pwd” } works right.

… I’m beginer with ruby, command system is new sufficient way for me.

thnx

ollin

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 1:00pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/7 "2006-07-11T13:00:23Z")

</div>

# since that is exec’s feature. exec replaces current process.

# 

# maybe you want system or `

# 

# irb(main):004:0\> `echo am still here`

# =\> “am still here\n”

# irb(main):005:0\> system “echo am still here”

# am still here

# =\> true

ok, ok, if you really want to run exec, you can do something this  
stupid,

irb(main):012:0\> `ruby -e "exec 'pwd'"`  
=\> “/root\n”  
irb(main):014:0\> system %q[ruby -e “exec ‘pwd’”]  
/root  
=\> true

---

<div class="post-metadata">

**Author:** ![ollin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/o/439d5e/32.png) [@ollin](https://www.ruby-forum.com/u/ollin)\
**Post date:** [July 11, 2006, 2:37pm UTC](https://www.ruby-forum.com/t/is-possible-to-return-after-exec-cmd/97915/8 "2006-07-11T14:37:36Z")

</div>

On Jul 11, 2006, at 7:00 AM, Peña, Botp wrote:

> ok, ok, if you really want to run exec, you can do something this  
> stupid,
> 
> irb(main):012:0\> `ruby -e "exec 'pwd'"`  
> =\> “/root\n”  
> irb(main):014:0\> system %q[ruby -e “exec ‘pwd’”]  
> /root  
> =\> true

That’s an impressively longwinded approach. I applaud you, sir 🙂  
-Mat
