使用sigaction停止子循环并拦截Ctrl * C时出现问题

时间:2019-03-10 04:34:16

标签: fork interrupt sigaction

我正在尝试编写一个程序,该程序使用sigaction拦截Ctrl ^ C,然后终止fork的子代。

代码:

file_name = input("What is your file name? Enter it here: ")

s = set()
with open(file_name) as f:
    for name in f:
        if name.startswith('From:'):
            s.add(name)

print(len(s))

我试图删除示例中所有不必要的代码。由于某些原因,当我按Ctrl ^ C时无法使中断起作用。最终,我希望能够关闭孩子并继续在父母中生活。我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:0)

  

由于某些原因,当我按Ctrl ^ C时无法使中断工作。

由于您的数据位于IO缓冲区中,因此将printf("Interrupt Worked");更改为printf("Interrupt Worked\n");(添加\n),您将获取数据。

有关IO缓冲区,请参见https://stackoverflow.com/a/53083985/7671328