void lc_cleanup(void);
After you call lc_cleanup(3) calling lc_process(3) or lc_process_file(3) will generally cause errors since the registered variables and callbacks have been unregistered.
#include <libconfig.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv) {
        int lc_p_ret, lc_rv_ret;
        char *filename = NULL;
        lc_rv_ret = lc_register_var("File", LC_VAR_STRING,
                                    &filename, 'f');
        if (lc_rv_ret != 0) {
                fprintf(stderr, "Error registering variable: %i.\n",
                        lc_geterrno());
                return(EXIT_FAILURE);
        }
        lc_p_ret = lc_process(argc, argv, "example", LC_CONF_APACHE,
                              NULL);
        lc_cleanup();
        if (lc_p_ret != 0) {
                fprintf(stderr, "Error processing configuration: \
                        %s\n", lc_geterrstr());
                return(EXIT_FAILURE);
        }
        if (filename != NULL) {
                printf("File specified was: %s\n", filename);
        } else {
                printf("No filename specified.\n");
        }
        return(EXIT_SUCCESS);
}