Yes, static variables will solve the problem. :D

Thanks Phil!

But there is a limitation to this approach by making Check implement an
interface(i.e. PrintInterface),
where printf_value() is from the interface implemented:

public class Check : PrintInterface{
  ...
  public static int x = 0;

  public open(){
    ...
    signal(SIGUSR1, sighandler);
  }
  ...
  public void sighandler(int signum) {
    x++;
    print_value();
  }

  public void print_value(){
    stdout.printf("%d", x);
  }
  ...
}

Do vala have anyway to get this running?

On Mon, Oct 18, 2010 at 9:13 PM, Phil Housley <[email protected]>wrote:

> On 18 October 2010 09:35, Ervin Orense Balaoro <[email protected]> wrote:
> > Hello,
> >
> > I dont know if this is the right place to ask questions regarding vala.
> But
> > anyway, ill post the question here just in case someone has the same
> > experience i had while working with vala using signal from posix.
> >
> > Code:
> >
> > public class Check{
> >  ...
> >  public int x = 0;
> >
> >  public open(){
> >    ...
> >    signal(SIGUSR1, sighandler);
> >  }
> >  ...
> >  public void sighandler(int signum) {
> >    stdout.printf("%d", x++);
> >  }
> >  ...
> > }
> >
> > How do we make our signal handlers access the global variables?
> > i write a similar code in C, but works okay there.
>
> The callback needed for signal() is a void -> void method, so there is
> no way to pass a pointer to your class instance, and so no way for the
> callback to invoke the method on the correct instance of the Check
> class.
>
> Using a static method and variable should work I assume.
>
> --
> Phil Housley
>
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to