我对C完全陌生......好吧。我很了解 C++。我正在尝试为我的作业运行一个多威胁程序,其中一个要求是让用户在命令提示符下输入他的命令。基本上我要问的是,我如何设置 int main 以便它可以不断地从命令提示符获取输入(所以我可以启动新线程)而不停止,以及如何进行比较,例如用户是否按下'E ' 做这个,如果他按 F 做那个等等。我猜 argc 根本不重要,因为我不知道用户要输入多少命令。最好的解决方法是什么
问问题
623 次
4 回答
2
当程序启动时,命令行参数被传递给int main(int argc, char **argv)
并且这些参数不会改变(除非程序修改它们)。
之后,程序可以从标准输入中读取命令,例如E
for 'do this' 和F
for 'do that'。除非您采取特定于平台的步骤使其行为不同,否则输入将不会提供给您的程序,直到用户在键入命令后点击返回。
因此,如果提供了命令行参数,您可以处理它们。完成此操作后,您可能会进行交互并等待用户的更多输入。
多线程与此关系不大。您可能需要一个线程来从用户那里读取数据(否则,某人或某物会感到困惑),但是线程之间的通信是一个完全独立的问题。
于 2013-02-22T01:23:12.413 回答
2
让主线程负责 i/o。
向用户打印一个提示,要求从主线程输入。
将用户输入从主线程传递到工作线程。
重复。
于 2013-02-22T01:23:17.250 回答
1
用户界面线程:
void *trd_func(void *p) {
while (1) {
int c = getchar();
switch(c) {
case 'E':
set_some_flag('E');
break;
default: break;
}
}
return 0;
}
于 2013-02-22T01:23:26.100 回答
0
如果你真的想通过做你想做的事来学习,
您应该开始寻找有关文件流和 ttys/规范输入的信息。
当您了解它的工作原理后,您将能够使用 read() 函数,并做任何您想与用户交互的事情(甚至做一个 shell)。
我可以向你保证,你会学到很多关于 I/O 文件流的有趣的东西。
但如前所述,您也可以使用 getchar()。
于 2013-02-22T01:28:27.533 回答