Tag: readline

使用C Readline从文件而不是stdin读取一行

我正在使用gcc -lreadline的readline来读取stdin。 后来,我想从一个文件中读取,所以我尝试了以下内容,但它仍然暂停并接受来自命令提示符的输入,而不是从文件中接受它。 这种方法有解决方法吗? FILE* savedStdin = stdin; stdin = fopen(“someFile.txt”, “r”); char* input = readline(NULL); stdin = savedStdin;

在OS X 10.5上使用readline的rl_insert_text

所以,我正在尝试使用readline将一些默认文本填充到用户输入中,并且无法使其在OSX 10.5上运行: // rl_insert_text_ex.c // gcc -o rl_insert_text_ex rl_insert_text_ex.c -lreadline #include #include int my_startup_hook(void) { return rl_insert_text(“ponycorns”); } int main(int argc, char *argv[]) { char *line; rl_startup_hook = (Function*) my_startup_hook; line = readline(“What’s your favorite mythical animal? “); if (NULL == line || ‘\0’ == *line) { printf(“Nothing given… :(\n”); } else { printf(“That’s funny, […]

用信号中断c / c ++ readline

我试图用信号(SIGUSR1)中断readline,但显然如果没有处理信号,程序退出,处理时,readline继续进行,好像什么也没发生。 读取线应该能够使用信号中断。 我从另一个问题中得到了一个想法: 强制退出readline()函数 #include #include #include #include #include pthread_t main_id; void *thread_main(void* arg) { sleep(10); pthread_kill(main_id, SIGUSR1); } void signal_handler(int sig) { puts(“got signal”); (void) sig; } int main(int argc, char** argv) { struct sigaction sa; sa.sa_handler = signal_handler; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); sigaction(SIGUSR1, &sa, NULL); main_id = pthread_self(); pthread_t id; pthread_create(&id, NULL, thread_main, […]

在尝试使用已安装的开发人员工具进行编译时,未找到/正在使用editline / history.h和editline / readline.h

我正在编写关于构建自己的LISP的教程( http://www.buildyourownlisp.com/chapter4_interactive_prompt ),出于某种原因,当我尝试编译时,我得到了这个: REPL.c:4:10: fatal error: ‘editline/readline.h’ file not found #include ^ 1 error generated. 我已经安装了osx开发者工具,brew正在显示readline已经安装,当我尝试brew install editline时它不知道该怎么办。 这是我的代码: 1 #include 2 #include 3 #include 4 #include 5 6 int main(int argc, char** argv) { 7 8 /* version/exit info */ 9 puts(“Edward Version 0.0.1”); 10 puts(“Press Ctrl+c to Exit\n”); 11 12 /* endless loop […]

C – 如何从Stdin或文件内存中读取字符串行

我需要一个读取行的版本,即内存保存。 我有这个“工作”的解决方案。 但我不确定它与记忆的表现如何。 当我启用free(text)它适用于几行,然后我收到一个错误。 所以现在虽然我是malloc文本,但是文本和结果都没有被释放。 那是对的吗 ? 为什么会这样呢? #include #include #include char* readFromIn() { char* text = malloc(1024); char* result = fgets(text, 1024, stdin); if (result[strlen(result) – 1] == 10) result[strlen(result) – 1] = 0; //free(text); return result; } 我有很多短线要阅读,我还需要stdin可以用FILE*句柄替换。 我没有必要重新分配文本,因为我只有短线。

GNU Readline:如何清除输入行?

我以“选择”方式使用GNU Readline,通过注册回调函数,如下所示: rl_callback_handler_install(“”, on_readline_input); 然后连接rl_callback_read_char作为STDIN_FILENO select()循环的回调。 这都是非常标准的东西,并且工作正常。 现在,我的程序异步地将消息打印到屏幕上,有时与用户的输入交错。 “干净”会话看起来像这样: user input SERVER OUTPUT SERVER OUTPUT user input SERVER OUTPUT 但是,如果用户在服务器响应到达时位于线路中间,该怎么办? 然后它变得丑陋: user input SERVER OUTPUT user inSERVER OUTPUT put SERVER OUTPUT 我通过在服务器输出之前打印换行符来解决这个问题,如果用户输入了任何内容(这很容易通过检查rl_line_buffer来判断),然后在打印服务器输出后执行rl_forced_update_display() 。 现在它看起来像这样: user input SERVER OUTPUT user in SERVER OUTPUT user input SERVER OUTPUT 这样更好,但仍然不完美。 当用户键入整行但尚未按Enter键时出现问题 – 那么它看起来像这样: user input SERVER OUTPUT user […]

Readline:获取SIGINT的新提示

我使用readline获得了类似于以下的代码: #include #include #include #include #include #include #include #include #include void handle_signals(int signo) { if (signo == SIGINT) { printf(“You pressed Ctrl+C\n”); } } int main (int argc, char **argv) { //printf(“path is: %s\n”, path_string); char * input; char * shell_prompt = “i-shell> “; if (signal(SIGINT, handle_signals) == SIG_ERR) { printf(“failed to register interrupts with […]

是否有一个简单的替代Readline?

在我正在进行的项目中,我试图让它接受用户命令并使用向上箭头提供历史记录。 我的目标是保持这个项目不依赖,我不想要求人们也只是为了编译我的项目而安装readline开发文件。 有没有人知道GNU Readline的简单替换只提供简单的function?

对’readline’的未定义引用

我在尝试运行维基百科中 提供的GNU Readline库示例代码时遇到问题。 它来了: #include #include #include #include #include int main() { char* input, shell_prompt[100]; // Configure readline to auto-complete paths when the tab key is hit. rl_bind_key(‘\t’, rl_complete); for(;;) { // Create prompt string from user name and current working directory. snprintf(shell_prompt, sizeof(shell_prompt), “%s:%s $ “, getenv(“USER”), getcwd(NULL, 1024)); // Display prompt and read […]

C读取线function

在大学作业中,建议在练习中使用C语言阅读function。 我已经搜索了它的参考但仍未找到它。 它真的存在吗? 在哪个标题? 您能否发布参考链接?