/*
* main.cpp
*
* Created on: 18.03.2017
* Author: sylwek
*/
#include <pthread.h>
#include <stdint.h>
#include <cstdio>
#include <unistd.h>
#include <csignal>
volatile bool $run = true;
static void quitHandler(int __attribute__((unused)) signum)
{
$run = false;
}
void setupQuitHandler()
{
struct sigaction action;
action.sa_handler = quitHandler;
action.sa_flags = SA_RESETHAND;
if (sigemptyset(&action.sa_mask) < 0) printf("[SetupQuit] sigemptyset");
if (sigaction(SIGINT, &action, nullptr) < 0) printf("[SetupQuit] sigaction SIGINT");
if (sigaction(SIGQUIT, &action, nullptr) < 0) printf("[SetupQuit] sigaction SIGQUIT");
if (sigaction(SIGTERM, &action, nullptr) < 0) printf("[SetupQuit] sigaction SIGTERM");
if (sigaction(SIGABRT, &action, nullptr) < 0) printf("[SetupQuit] sigaction SIGABRT");
}
int main(int argc, char **argv) {
setupQuitHandler();
while($run)
{
sleep(1);
printf("Do nothing! \n");
$run = false;
}
}
LyoKICogbWFpbi5jcHAKICoKICogIENyZWF0ZWQgb246IDE4LjAzLjIwMTcKICogICAgICBBdXRob3I6IHN5bHdlawogKi8KI2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxjc2lnbmFsPgogCnZvbGF0aWxlIGJvb2wgJHJ1biA9IHRydWU7CiAKc3RhdGljIHZvaWQgcXVpdEhhbmRsZXIoaW50IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIHNpZ251bSkKewogICAgJHJ1biA9IGZhbHNlOwp9CiAKdm9pZCBzZXR1cFF1aXRIYW5kbGVyKCkKewogICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CiAgICBhY3Rpb24uc2FfaGFuZGxlciA9IHF1aXRIYW5kbGVyOwogICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTRVRIQU5EOwogCiAgICBpZiAoc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKSA8IDApIHByaW50ZigiW1NldHVwUXVpdF0gc2lnZW1wdHlzZXQiKTsKIAogICAgaWYgKHNpZ2FjdGlvbihTSUdJTlQsICZhY3Rpb24sIG51bGxwdHIpIDwgMCkgcHJpbnRmKCJbU2V0dXBRdWl0XSBzaWdhY3Rpb24gU0lHSU5UIik7CiAgICBpZiAoc2lnYWN0aW9uKFNJR1FVSVQsICZhY3Rpb24sIG51bGxwdHIpIDwgMCkgcHJpbnRmKCJbU2V0dXBRdWl0XSBzaWdhY3Rpb24gU0lHUVVJVCIpOwogICAgaWYgKHNpZ2FjdGlvbihTSUdURVJNLCAmYWN0aW9uLCBudWxscHRyKSA8IDApIHByaW50ZigiW1NldHVwUXVpdF0gc2lnYWN0aW9uIFNJR1RFUk0iKTsKICAgIGlmIChzaWdhY3Rpb24oU0lHQUJSVCwgJmFjdGlvbiwgbnVsbHB0cikgPCAwKSBwcmludGYoIltTZXR1cFF1aXRdIHNpZ2FjdGlvbiBTSUdBQlJUIik7Cn0KIAppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKIAogICAgc2V0dXBRdWl0SGFuZGxlcigpOwogICAgd2hpbGUoJHJ1bikKICAgIHsKICAgICAgICBzbGVlcCgxKTsKICAgICAgICBwcmludGYoIkRvIG5vdGhpbmchIFxuIik7CiAgICAgICAgJHJ1biA9IGZhbHNlOwogICAgfQp9