通过C++程序中EOF(CTRL+D)字符上的错误代码提供用户反馈
Providing User Feedback via Error Code on EOF (CTRL+D) character in C++ Program
我知道关于EOF和CTRL+D也有类似的问题,但我有一个更具体的问题。按照我的理解,CTRL+D表示STDIN结束,由计算机处理,而不是由正在运行的应用程序处理。但是,我需要向程序的用户提供通过(CTRL+D)键入的EOF字符或包含在包含命令的输入文件中的EOF角色的反馈。我该怎么做?
我已经包含了我想如何做到这一点的简单代码,但由于明显的原因,它不起作用:
#include <iostream>
#include <string>
using namespace std;
int input()
{
string cmdstring;
cin >> cmdstring;
if (cmdstring == "bye") //Exit on "bye" command
{
return 1;
}
else if (cmdstring == "^D") //Exit on EOF character CTRL+D
{
return 2;
}
else //Continue shell prompt
{
return 0;
}
}
我正在尝试编写自己的shell,并且希望在shell退出时提供退出状态。非常感谢!
编辑:我把它改成cin.ef(),但它仍然不起作用。
else if (cin.eof()) //Exit on EOF character CTRL+D
{
return 2;
}
此外,我忘了提到这段代码是一个在循环中运行的函数,所以用户持续提示,直到他们提供"再见"或读取EOF字符。
int exitstatus = 0; //Tracks exit code status
do {
exitstatus = input();
} while (exitstatus == 0);
没有"^D"字符传递给应用程序。shell截取"^D"字符并关闭流,导致应用程序不再注册输入。因此,I/O
系统在stdin上设置EOF状态。
这个代码对我有效:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string cmdstring;
cin >> cmdstring;
if(cmdstring == "bye") //Exit on "bye" command
{
return 1;
}
else if(cmdstring == "^D") //Exit on EOF character CTRL+D
{
return 2;
}
else if(cin.eof()) // pressing Ctrl-D should trigger this
{
return 3;
}
return 0;
}
按下Ctrl-D
应返回错误代码3
相关文章:
- 错误处理.将系统错误代码映射到泛型
- 为什么我在使用void函数时得到错误代码C2276
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 逻辑运算符上出现错误代码 a')'
- 'val' Arduino 错误代码之前的预期'('
- 我在贪吃蛇游戏中收到了错误代码 -1073741571
- 根据 GetLastError 直接写入磁盘会导致错误代码 5
- 当我选择大于 720 的矩阵大小时,程序退出并显示错误代码.可能是什么原因?
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 使用另一个函数调用一个函数(都在类中)时出现问题.没有错误代码C++
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 从 C++ 调用 cURL 命令会返回意外的错误代码,如 1792 和 6656
- WSALookupServiceBegin() 上的错误代码 10022(无效的 arugment)
- C++ Schannel POST 400 错误代码错误请求
- openCL-创建子缓冲区返回错误代码13
- 更新了Runge-Kutta(RK4)C++错误代码中的二阶DE
- 获取有关使用未初始化内存的错误代码
- 排序程序的意外错误代码
- 创建进程为用户返回错误代码 2
- 通过C++程序中EOF(CTRL+D)字符上的错误代码提供用户反馈