ecore_exe_example_child.c

This is a child process used to receive messages and send it back to its father.

This is a child process used to receive messages and send it back to its father.Check the Full tutorial

#include <stdio.h>
#include <unistd.h>
#include <Ecore.h>
#define BUFFER_SIZE 1024
#ifdef _WIN32
#define HANDLER_TYPE Ecore_Win32_Handler
#else
#define HANDLER_TYPE Ecore_Fd_Handler
#endif
static Eina_Bool
_fd_handler_cb(void *data EINA_UNUSED, HANDLER_TYPE *fd_handler EINA_UNUSED)
{
static int numberOfMessages = 0;
char message[BUFFER_SIZE];
if (!fgets(message, BUFFER_SIZE, stdin))
return ECORE_CALLBACK_RENEW;
numberOfMessages++;
if (numberOfMessages < 3)
{
printf("My father sent this message to me:%s\n", message);
fflush(stdout);
return ECORE_CALLBACK_RENEW;
}
else
{
printf("quit\n");
fflush(stdout);
ecore_main_loop_quit();
return ECORE_CALLBACK_DONE;
}
}
int
main(void)
{
if (!ecore_init())
goto error;
#ifdef _WIN32
/* note that stdin fd's on windows don't work the same
* as on unixes. this uses stdin just as a quick
* example that's simple instead of a more complex
* one, so this won't actually work on windows unless
* you use a fd that comes from somewhere that is
* select()able. */
ecore_main_win32_handler_add(GetStdHandle(STD_INPUT_HANDLE),
_fd_handler_cb,
NULL);
#else
ecore_main_fd_handler_add(STDIN_FILENO,
ECORE_FD_READ,
_fd_handler_cb,
NULL, NULL, NULL);
#endif
ecore_main_loop_begin();
ecore_shutdown();
return EXIT_SUCCESS;
error:
return EXIT_FAILURE;
}
ecore_main_win32_handler_add
Ecore_Win32_Handler * ecore_main_win32_handler_add(void *h, Ecore_Win32_Handle_Cb func, const void *data)
Creates a Ecore_Win32_Handler object and add it to the win32_handlers list.
Definition ecore_main.c:1587
ecore_main_fd_handler_add
Ecore_Fd_Handler * ecore_main_fd_handler_add(int fd, Ecore_Fd_Handler_Flags flags, Ecore_Fd_Cb func, const void *data, Ecore_Fd_Cb buf_func, const void *buf_data)
Adds a callback for activity on the given file descriptor.
Definition ecore_main.c:1449
ECORE_FD_READ
@ ECORE_FD_READ
Fd Read mask.
Definition Ecore_Common.h:1394
ecore_shutdown
EAPI int ecore_shutdown(void)
Shuts down connections, signal handlers sockets etc.
Definition ecore.c:371
ecore_init
EAPI int ecore_init(void)
Sets up connections, signal handlers, sockets etc.
Definition ecore.c:230
ECORE_CALLBACK_RENEW
#define ECORE_CALLBACK_RENEW
Return value to keep a callback.
Definition Ecore_Common.h:153
ECORE_CALLBACK_DONE
#define ECORE_CALLBACK_DONE
Return value to stop event handling.
Definition Ecore_Common.h:156
ecore_main_loop_quit
void ecore_main_loop_quit(void)
Quits the main loop once all the events currently on the queue have been processed.
Definition ecore_main.c:1321
ecore_main_loop_begin
void ecore_main_loop_begin(void)
Runs the application main loop.
Definition ecore_main.c:1311
Eina_Bool
unsigned char Eina_Bool
Type to mimic a boolean.
Definition eina_types.h:527
EINA_UNUSED
#define EINA_UNUSED
Used to indicate that a function parameter is purposely unused.
Definition eina_types.h:339