linksWithCF.c   [plain text]


#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <dispatch/dispatch.h>


__attribute__((section("__DATA,__allow_alt_plat"))) uint64_t dummy;

int main(int argc, const char* argv[], const char* envp[], const char* apple[]) {
    dispatch_source_t exitSource = dispatch_source_create(DISPATCH_SOURCE_TYPE_PROC, getppid(),
                                                            DISPATCH_PROC_EXIT, dispatch_get_main_queue());
    dispatch_source_set_event_handler(exitSource, ^{
        exit(0);
    });
    dispatch_resume(exitSource);
    dispatch_async(dispatch_get_main_queue(), ^{
        kill(getppid(), SIGUSR1);
    });
    dispatch_main();
}