killing ruby program from C

J

Joe Van Dyk

Hi,

I need to start some Ruby programs from a C program. The C program
needs to be able to terminate the Ruby programs when it either exits
or some condition is met.

I tried:

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>


int main()
{
system("ruby test.rb");

sleep(5);
if (killpg(0, SIGKILL) =3D=3D -1)
perror("killpg");
printf("main program ending\n");
return 0;
}

Which seems to work fine on a non-ruby program (i.e. another C
program). But the Ruby program (a simple while-true loop that prints
stuff) doesn't exit when the C program does killpg.

Thoughts?
 
J

Joe Van Dyk

Fixed. If I fork, and then launch the ruby program via system() in
the child process, the killpg kills the ruby program.
 
N

nobu.nokada

Hi,

At Thu, 2 Jun 2005 02:30:37 +0900,
Joe Van Dyk wrote in [ruby-talk:144243]:
Fixed. If I fork, and then launch the ruby program via system() in
the child process, the killpg kills the ruby program.

SIGKILL lets ruby skip even finalizations and END blocks. If
SIGTERM is ignored, try SIGSTOP, SIGTERM and SIGCONT.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,677
Members
48,796
Latest member
Greg L.

Latest Threads

Top