# Duplicate this code in C

**URL:** <https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167>\
**Category:** Ruby\
**Created:** [September 9, 2009, 9:09am UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167 "2009-09-09T09:09:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 9, 2009, 9:09am UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/1 "2009-09-09T09:09:02Z")

</div>

Is there a way to duplicate this code using C?

[http://pastie.org/610698](http://pastie.org/610698)

The goal is to launch multiple ruby processes from a C program.

Mike B.

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 9, 2009, 9:26am UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/2 "2009-09-09T09:26:02Z")

</div>

barjunk wrote:

> Is there a way to duplicate this code using C?

A very probably yes. Passenger does it. Others (mongrel, etc…) do it.  
So can you 😉

kaspar

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 9, 2009, 3:09pm UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/3 "2009-09-09T15:09:08Z")

</div>

On Wed, 2009-09-09 at 15:35 +0900, barjunk wrote:

> Is there a way to duplicate this code using C?
> 
> [http://pastie.org/610698](http://pastie.org/610698)
> 
> The goal is to launch multiple ruby processes from a C program.
> 
> Mike B.

from [http://www.gidforums.com/t-11552.html](http://www.gidforums.com/t-11552.html)

mod to meet needs…google for more info…

#include \<stdio.h\>  
#include \<sys/types.h\>  
#include \<sys/wait.h\>  
#include \<unistd.h\>  
#include \<stdlib.h\>  
int main()  
{  
int i;  
pid\_t cpid;  
pid\_t child\_pid;  
cpid = fork();

```
switch (cpid) {
    case -1: printf("Fork failed; cpid == -1\n");
             break;

    case 0: child_pid = getpid();
            for (i = 0; i < 10; i++) {
                printf("%d: this is the child, pid = %d\n", i, 

```

child\_pid);  
sleep(1);  
}  
exit(0);

```
    default: printf("This is the parent: waiting for %d to 

```

finish\n", cpid);  
waitpid(cpid, NULL, 0);  
printf(“Ttttthat’s all, folks\n”);  
}  
return 0;  
}

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 10, 2009, 1:05am UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/4 "2009-09-10T01:05:40Z")

</div>

On Sep 9, 5:08 am, Reid T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> pid_t cpid;
> sleep(1);
> 
> ```

Thanks for this. I should have been more specific and say that I was  
trying to write ruby code in C to then launch the forks…so I really  
mean to duplicate the ruby code to be ruby code …in C…

Kaspar,

Passenger does it, but using ruby. Mongrel doesn’t install yet in  
1.9, although I need to still go through the online code…I’m going  
to guess they do it in ruby as well.

Any chance you could point me to actual code that does this? I looked  
at eventmachine too, but I’m not good enough to figure out what I  
need, which is kinda why I’m here.

Again, thanks for any tips.

Mike B.

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 10, 2009, 3:33pm UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/5 "2009-09-10T15:33:52Z")

</div>

On Thu, 2009-09-10 at 08:05 +0900, Mike B. wrote:

> On Sep 9, 5:08 am, Reid T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > On Wed, 2009-09-09 at 15:35 +0900, barjunk wrote:
> > 
> > > Is there a way to duplicate this code using C?
> > 
> > > [http://pastie.org/610698](http://pastie.org/610698)

> Any chance you could point me to actual code that does this? I looked  
> at eventmachine too, but I’m not good enough to figure out what I  
> need, which is kinda why I’m here.
> 
> Again, thanks for any tips.
> 
> Mike B.

perhaps a look at ruby2c…

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 10, 2009, 7:40pm UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/6 "2009-09-10T19:40:57Z")

</div>

On Sep 10, 8:57 am, Mike B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > Thanks for this. I should have been more specific and say that I was  
> > > at eventmachine too, but I’m not good enough to figure out what I  
> > > whirl.
> 
> Mike B.

ruby2c still not working, I filed a bug report:

[http://rubyforge.org/tracker/index.php?func=detail&aid=27086&group\_id=443&atid=1766](http://rubyforge.org/tracker/index.php?func=detail&aid=27086&group_id=443&atid=1766)

Mike B.

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 10, 2009, 7:01pm UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/7 "2009-09-10T19:01:43Z")

</div>

On Sep 10, 5:32 am, Reid T. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Kaspar,
> 
> > Mike B.
> 
> perhaps a look at ruby2c…

Another good idea. I’m having trouble getting that to work as  
well… There is an upgrade to 1.0.0.7 so I’m going to give that a  
whirl.

Mike B.

---

<div class="post-metadata">

**Author:** ![barjunk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/3ec8ea/32.png) [@barjunk](https://www.ruby-forum.com/u/barjunk)\
**Post date:** [September 15, 2009, 8:49am UTC](https://www.ruby-forum.com/t/duplicate-this-code-in-c/175167/8 "2009-09-15T08:49:12Z")

</div>

Hi Mike,

> > > Any chance you could point me to actual code that does this? =A0I  
> > > looke=  
> > > d  
> > > at eventmachine too, but I’m not good enough to figure out what I  
> > > need, which is kinda why I’m here.

I think you need to look at ruby as just another executable. There are  
plenty of examples on the net on how to do

if (! fork()) {  
exec(SOME\_PROGRAM);  
}

on the net. Ruby isn’t any different - when forked and execed it is  
just a binary.

kaspar

PS: Didn’t see your reply on my nttp server ☹

–  
I’m trying a new usenet client for Mac, Nemo OS X, since 0 days.

You can download it at [http://www.malcom-mac.com/nemo](http://www.malcom-mac.com/nemo)
