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