我正在使用系统调用,如果失败,我需要为不同的errnos做不同的事情.
我需要编写看起来像这样的代码:
int res;
res = systemCall();
if (res == -1)
{
if (errno == ENOMSG)
{
doSomething();
}
else
{
doSomethingElse();
}
}
Run Code Online (Sandbox Code Playgroud)
perror没有帮助,因为它只打印值.
至于strerro - 如果它是我需要的,我不是如何使用它,因为在这里它说实际的字符串与错误不同.从手册页引用:"(例如,如果errnum是EINVAL,则返回的描述将是"Invalid argument")".
我正在使用Linux.系统调用:msgsend和msgrcv(https://linux.die.net/man/2/msgrcv).我不确定你问的C库是什么.
我看到我没有很好地解释自己.
语句if(errno == ENOMSG)是否有效?是否有这样的变量errno?基本上我的问题是:if为了测试errno ,在声明中应该怎么做?
我正在使用 gdb 调试器来运行一个包含循环的程序(让我们坐在 10 中)。当我进入循环时,我不想进入它。我知道我可以在循环之后设置第二个断点,而不是 c (继续)。但我也记得有可能做类似 n 10 (接下来的 10 次)的事情。n 10 不起作用(gdb 并没有说我做错了什么,但它没有达到我的预期)。
一个命令可以运行n次吗?
我正在尝试通过以下方式使用 reverse() 方法:
>>> L=[1,2,3]
>>> R=L
>>> L.reverse()
>>> L
[3, 2, 1]
>>> R
[3, 2, 1]
Run Code Online (Sandbox Code Playgroud)
为什么它也会反转 R?如何保留原始列表并创建反向列表?
谢谢!
我正在编写我的异常类:
class MyExcept: public std::exception
{
public:
MyExcept(std::string _msg);
virtual ~MyExcept() throw();
virtual const char* what() const throw();
private:
std::string m_errorMsg;
};
MyExcept::MyExcept(std::string _msg)
: m_errorMsg(_msg)
{
}
MyExcept::~MyExcept() throw()
{
}
const char* MyExcept:: what() const throw()
{
return m_errorMsg.c_str;
}
Run Code Online (Sandbox Code Playgroud)
我用g ++编译并在函数what()中返回以下错误:
不能将'std :: __ cxx11 :: basic_string <_CharT,_Traits,_Alloc> :: c_str,std :: allocator>'从类型'const char*(std :: __ cxx11 :: basic_string ::)()const'转换为类型'const char*'返回m_errorMsg.c_str;
我做错了什么?谢谢
c ×1
c++ ×1
errno ×1
exception ×1
gdb ×1
overloading ×1
python ×1
python-3.x ×1
system-calls ×1