[ad_1]
Bien, después de RTFM sé que la “función vinculante” establece “ERROR(es)” en caso de falla…
1. ¿Puedo obtener dicha información del siguiente código?
(No estoy pidiendo un “ERROR” específico, solo un indicador, en código, de que la función establece (stderr) “ERROR”.
2. ¿Cuál es la forma más sencilla de recuperar físicamente el texto real del error, suponiendo que sea “stderr”?
Sólo quiero mostrarlo, no necesito registrarlo ni guardarlo en un ARCHIVO (que parece ser la forma más común).
/** * @brief Function template for std::bind. * @ingroup binders */ template<typename _Func, typename... _BoundArgs> inline _GLIBCXX20_CONSTEXPR typename _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type bind(_Func&& __f, _BoundArgs&&... __args) { typedef _Bind_helper<false, _Func, _BoundArgs...> __helper_type; return typename __helper_type::type(std::forward<_Func>(__f), std::forward<_BoundArgs>(__args)...); }
Lo que he probado:
Intenté iniciar el proceso sin éxito y leí stderr.
Solución 1
Para empezar, no puede confiar en que ninguna función de la biblioteca haya configurado stderr en nada. Ese es uno de los tres identificadores estándar para entrada y salida. No es un búfer de texto, por lo que “leerlo” no es una opción viable.
La forma más sencilla es llamar WSAGetLastError
en el mundo de windows y en otros lugares es pasar errno
a la función strerror
. Aquí hay un artículo que describe esto: Cómo recibir un mensaje de error de socket[^]
El comentario de Richard es correcto y su pregunta realmente no está nada clara.
Normalmente cuando uno quiere escribir a stderr
haces algo como esto:
fprintf( stderr, "Error at line %d of %s\n", __LINE__, __FILE__ );
stderr
como stdout
también se puede redirigir a un archivo.
[ad_2]
コメント