程序与控制台的关系

语言:C/C++
本文有许多个人观点,仅供参考
基本定义
所谓的控制台就是DOS窗口(命令行窗口),那个黑框框.
“所谓的控制台应用程序,就是能够运行在MS-DOS环境中的程序 。控制台应用程序通常没有可视化的界面,只是通过字符串来显示或者监控程序 。控制台程序常常被应用在测试、监控等用途,用户往往只关心数据,不在乎界面 。” ——来自百度百科
.exe
,Host , 即命令行程序的宿主进程 。就是它控制控制台的 。
最基础的程序运行出现的窗口就是控制台 。
程序运行后,会调用申请一个控制台窗口 。
此时程序仍然进行 。
程序中的函数
程序会进行字符的输出,使用cout,,等语句 。这些语句会将字符串发送到上,将字符输出 。

程序与控制台的关系

文章插图
输入语句scanf,cin,,gets,getc等,先让键盘的字符经过控制台进入缓冲区,当按下回车时进行读取,然后从将字符串发送回程序中 。
【程序与控制台的关系】来自conio.h/.h的getch()则是直接从控制台摘去字符返回,不经过缓冲区也不显示到屏幕上;
kbhit()则可以检测控制台键盘是否被按下 。
()
是调用dos命令的函数之一,在程序中有时会使用 。
cls,color,mode con…,title,pause等都是系统自带的针对控制台设置的程序,分别进行 清屏、设置颜色、设置控制台属性、设置标题、暂停 等功能 。
.h里的一些函数,如,ute等,也可以达到相应的效果 。
调整程序与控制台的函数
.h里的函数
()
程序与控制台的关系

文章插图
直接让退出,脱离并退出控制台 。
()
调用,申请一个新的控制台窗口 。
(pid)
参数填进程ID
BOOL(__in DWORD );
让单独的程序进程附加指定进程的控制台,达到共用的目的 。
注意
((),);
这一句只能让控制台窗口隐藏,并不能释放,所以控制台仍占据内存 。如果你的程序不用控制台,最好要么用(),要么直接不要申请控制台.
(虽然我以前经常隐藏控制台)
项目工程都不会使用控制台,因为控制台不再满足人们的需要 。他们自己注册窗口 。
一个叫做的链接,可以让exe明白运行它的方式 。将它调为则必须注册自己的窗口;将它调为则会申请控制台 。这也就是下面这条语句的用意所在 。
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )