def main():
    parser = Parser()
    args = parser.get_arguments()

    container_manager = ContainerManager()

    events_queue = Queue()

    capabilities_tracer = CapabilitiesTracer(events_queue)
    capabilities_tracer.start()

    container_pid = container_manager.start(args)
    container_config = container_manager.get_config()

    capabilities_analyzer = CapabilitiesAnalyzer(events_queue, container_pid,
                                                 container_config)
    capabilities_analyzer.start()

    def clean_up():
        container_manager.stop()
        capabilities_tracer.stop()
        capabilities_analyzer.stop()

        capabilities_analyzer.print_report()

        sys.exit()

    def signal_handler(_signal_number, _frame):
        clean_up()

    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGINT, signal_handler)

    for log in container_manager.logs():
        print(log.decode())

    print('Container exited')
    clean_up()