This example shows how to setup and use an fd_handler. See the explanation here.
#include <Ecore.h>
#include <unistd.h>
struct context
{
};
static void
{
printf("prepare_cb called.\n");
}
{
struct context *ctxt = data;
char buf[1024];
size_t nbytes;
int fd;
{
printf("An error has occurred. Stop watching this fd and quit.\n");
ctxt->handler = NULL;
}
nbytes = read(fd, buf, sizeof(buf));
if (nbytes == 0)
{
printf("Nothing to read, exiting...\n");
ctxt->handler = NULL;
}
buf[nbytes - 1] = '\0';
printf("Read %zd bytes from input: \"%s\"\n", nbytes - 1, buf);
}
{
printf("Timer expired after 5 seconds...\n");
}
int
main(void)
{
struct context ctxt = {0};
{
printf("ERROR: Cannot init Ecore!\n");
return -1;
}
_fd_handler_cb,
&ctxt, NULL, NULL);
printf("Starting the main loop. Type anything and hit <enter> to "
"activate the fd_handler callback, or CTRL+d to shutdown.\n");
if (ctxt.handler)
if (ctxt.timer)
return 0;
}