如何强制读取通过

时间:2011-09-30 22:26:01

标签: c shell system-calls

所以我正在编写一个简单的shell。相关代码发布在下面。

void sig_int_handler(int signum) { 
    if (pid == -1) // do nothing
    else kill(...);
}

signal(SIGINT, sig_int_handler);

..
while(1) {
    pid = -1;
    printf(COMMAND_PROMPT);
    input_len = read(...);

    if only enter is pressed: continue;

    // parse inputs 

    pid = fork();
    if (pid == 0) { // Do child process operations }
    else if (pid > 0) { // Parent waits for child }
    else {..}
}

但现在当我按下ctrl + c时,它会正确地退出孩子。但是,如果我在常规终端中按ctrl + c,它会在stdout上打印出“ctrl + c”,但之后它什么也没做。如何强制读取换行符以便它给我另一个提示?

1 个答案:

答案 0 :(得分:2)

我假设你在这里尝试写一些类似shell的东西。

如果是这样的话:您不应该在shell中处理^ C.如果为子进程设置新的进程组(使用setpgid()TIOCSPGRP),则只会收到SIGINT。