【发布时间】:2016-04-22 06:04:18
【问题描述】:
我想用 3 个线程(main、reader、writer)编写简单的程序。阅读器线程是这样的:
char message[128];
while (1) {
std::cin >> message;
}
主线程捕获Ctrl+Z 动作,然后用户按下此控件,然后我想显示像Do you want finish? (Y/N) __ 这样的简单选择,其中__ 是std::cin 动作。现在我有类似的东西:
void signal_handler(int signal) {
char finish;
std::cout << "Do you want finish? (Y/N)";
std::cin >> finish;
}
int main(void) {
signal(20, signal_handler);
...
但是当我最初发送简单的Y 时会转到阅读器线程,现在当我发送Y 时会转到主线程。如何将标准输入重定向到主线程?
【问题讨论】:
-
您在信号处理程序中做的太多了,只需设置一个由您的程序检查的标志。也没有硬编码信号编号,而是使用名称。
-
什么是“C之前”中的“C”?
-
@UlrichEckhardt 对不起,我的错。我的英语很差:
-
但是现在的“C”是什么意思呢?如果您指的是语言,那么您的语言是 C++,而且,它应该是一个标签,而不是标题的一部分。
标签: c++ multithreading stdin