#include // signal #include // puts #include // std::generator #include // pause void manejador_sigusr1(int) { puts("[servidor]: petición recibida\n" "[servidor]: respuesta enviada"); raise(SIGUSR2); } void manejador_sigusr2(int) { puts("[cliente ]: respuesta recibida\n" "[cliente ]: petición enviada"); raise(SIGUSR1); } std::generator cliente() { puts("[cliente ]: petición enviada"); while (true) co_yield raise(SIGUSR1); } int main() { signal(SIGUSR1, manejador_sigusr1); signal(SIGUSR2, manejador_sigusr2); for (auto _ : cliente()) pause(); }