程序开始时,默认情况下是否需要stdin,stdout和stderr的文件描述符0,1和2?API调用(例如open(...),socket(...))是否会返回0,1和2,因为这些值已经被采用了?是否存在open(...)或socket(...)返回0,1或2的情况.0,1和2与stdin,stdout和stderr无关.
我正在使用openssl与远程服务器建立TLS连接.
以下是代码段:
if ((ret = SSL_connect(c->ssl)) <= 0) {
ret = SSL_get_error(c->ssl, ret);
if((err = ERR_get_error())) {
SSL_load_error_strings();
ERR_load_crypto_strings();
CRERROR(LOGSSLUTILS, "SSL connect err code:[%lu](%s)\n", err, ERR_error_string(err, NULL));
CRERROR(LOGSSLUTILS, "Error is %s \n",ERR_reason_error_string(err));
}
}
Run Code Online (Sandbox Code Playgroud)
由于某些未知原因,ssl_connect失败,我只是想通过使用ERR_error_string来确定原因,输出是:
SSL connect err code:[336077172] (error:14082174:lib(20):func(130):reason(372))
Error: cmrSSLlInit:174 Error is (null)
Run Code Online (Sandbox Code Playgroud)
如您所见,我只能获取错误代码但无法获取可读错误字符串.
如何获取可读错误字符串?
我知道y$可以将字符串从光标位置拉到行尾,但"\n\r"始终包含 ,是否有任何解决方案可以在不"\n\r"包含 的情况下做到这一点?
在文本文件中,对于每一行,删除从空格开始到行尾的字符.
例如:在包含两行的文件中:
hello world
foo good good
Run Code Online (Sandbox Code Playgroud)
处理后,文件看起来像
hello
foo
Run Code Online (Sandbox Code Playgroud)
我试过了^\+\s,但似乎只处理了行尾的空格