Làm cách nào để truy xuất/in (stderr) LỖI"?

lập trình

[ad_1]

OK, sau RTFM, tôi biết “liên kết chức năng” đặt “ERROR(s)” do lỗi …
1. Tôi có thể lấy thông tin đó từ mã dưới đây không?
(Tôi không yêu cầu “ERROR” cụ thể mà chỉ là một chỉ báo – trong mã – mà hàm đặt (stderr) “ERROR”.
2. Cách đơn giản nhất để truy xuất văn bản thực tế của lỗi là gì – giả sử đó là “stderr”?
Tôi chỉ muốn hiển thị nó, tôi không cần phải đăng nhập hoặc lưu nó vào TẬP TIN (có vẻ là cách phổ biến nhất).

C++
/**
   *  @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)...);
    }

Những gì tôi đã thử:

Đã thử bắt đầu quá trình và đọc stderr không thành công.

Giải pháp 1

Để bắt đầu, bạn không thể dựa vào bất kỳ chức năng thư viện nào để đặt stderr thành bất kỳ thứ gì. Đó là một trong ba tay cầm tiêu chuẩn cho đầu vào và đầu ra. Nó không phải là bộ đệm văn bản nên “đọc” từ nó không phải là một lựa chọn khả thi.

Cách đơn giản nhất là gọi WSAGetLastError trong thế giới windows và những nơi khác nó sẽ vượt qua errno đến chức năng strerror. Đây là một bài viết mô tả điều này: Cách nhận thông báo lỗi ổ cắm[^]

Nhận xét của Richard là chính xác và câu hỏi của bạn thực sự không rõ ràng chút nào.

Thông thường khi một người muốn viết thư cho stderr bạn làm một cái gì đó như thế này:

C++
fprintf( stderr, "Error at line %d of %s\n", __LINE__, __FILE__ );

stderrgiống stdoutcũng có thể được chuyển hướng đến một tập tin.

[ad_2]

コメント

タイトルとURLをコピーしました