如何让 readline() 在 Ctrl+C 上退出?

How do I make readline() exit on Ctrl+C?

遇到Ctrl+C.

需要让readline退出
if (chkCmd(1, farg[0], "INPUT$")) {
    cerr = 0;
    ftype = 1;
    if (fargct > 1) {cerr = 3; goto fexit;}
    if (fargct == 1 && fargt[1] != 1) {cerr = 2; goto fexit;}
    outbuf[0] = 0;
    char* tmp = NULL;
    if (fargct == 1) {
        tmp = readline(farg[1]);
    } else {
        tmp = readline("?: ");
    }
    if (tmp != NULL) {
        copyStr(tmp, outbuf);
        free(tmp);
    }
    if (debug) printf("input output: {%s}\n", outbuf);
    goto fexit;
}

如果不修改 readline 的源代码(我想不惜一切代价避免这样做),我不知道如何做到这一点。我试过 rl_set_signals();rl_clear_signals(); 但这些都不起作用。

我已经进行了多次 Google 搜索,结果却得出了不相关的结果,所以我认为这个问题是第一个问题。

rl_getc_function = getc;

更改 readline 的 getc 函数是有效的,因为 getc returning -1 在 Ctrl+C 上,这导致 readline 为 return NULL。