c - 如何在 Mac 操作系统上等待用户的操作?

标签 c pthreads getchar getch

我正在使用 pthreads 为 Mac OS 编写一个多线程命令行工具。我有四个线程产生大量输出。他们都在做同样的工作。当其中一个找到所需的答案时,它将全局变量 var 设置为 1 并退出。当所有线程都在工作时,main 正在执行 for 循环,而不是join这些线程。循环看起来像这样:while(!var);。当 var 设置为 1 时,该循环停止。

循环结束后,所有线程都将被终止。然后我想等待用户的输入并退出(例如“按 Enter 退出...”)。我尝试使用 getchar(),而许多互联网资源建议使用 getch(),但 Mac OS 上没有 getch(),对吧?

问题是,当我运行这个应用程序时,只需双击应用程序的图标来运行它,而无需先启动终端,它可以正常工作,直到找到答案。不幸的是,它不会等待。它只是说类似进程终止(没关系,程序成功完成并且返回s 0),仅此而已。如果我从终端运行它,一切都是一样的。完成后就OK了,然后显示命令提示符。

在 Mac OS 中如何等待用户输入(例如“按 Enter 退出...”)?

最佳答案

你可以尝试这样的事情:

 #include <stdlib.h>

int main()
{
    // Any Key will work actually
    system( "read -n 1 -s -p \"Press Enter to exit...\"" );
    return 0;
}

关于c - 如何在 Mac 操作系统上等待用户的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28882546/

相关文章:

将代码更改为没有指针

c - 子进程恢复时不发出 SIGCHLD 信号

visual-studio - 如何在 visual studio 调试控制台中生成 EOF(或 ASCII 0)?

c - C中的*(a[1])和*(*a+1)有什么区别?

c - 如何在 C 中交换 num1 的第一个字节与 num2 的最后一个字节?

c++ - 为什么这个 c++ 多线程互斥代码偶尔会出现故障?

c - 线程池如何在 C 中创建带队列的线程池?

c++ - Pthread 模板参数错误

c - 为什么我无法从 getchar() 获取字符串

c - 我的程序不接受 scanf 命令的输入