나는 이것에 대해 많은 주제를 알고 있지만 그 중 아무도 나를 도울 수 없다.Eclipse C++ 콘솔 인쇄 주문 리눅스
내 C/C++ 프로젝트 std::cout
및 std::cerr
에 정보 (cout) 또는 오류 (cerr)를 인쇄하는 데 사용합니다. 하지만 실행하면 올바른 순서로 인쇄되지 않고 "그룹 인쇄"하는 것처럼 보입니다. 언젠가 모든 세르 (cerr) 다음에는 모든 시체 (cout)와 언젠가는 모든 시체 (cout)가 먼저 그 다음에 모든 세르 (cerr)가 있습니다.
각 줄마다 flush()
을 시도했지만 작동하지 않습니다. (다행히도 매번 사용하는 것은 끔찍할 것입니다 ...). setvbuf(stdout, NULL, _IONBF, 0);
같은 문제를 시도했습니다 ...
직접 리눅스의 콘솔에서 프로그램을 실행하면 순서는 좋지만 일식 콘솔은 색상 때문에 더 유용합니다. 여기
코드 샘플이 예제 cerr에서
#include <iostream>
int main(int argc, char** argv)
{
std::cerr << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cout << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cerr << __LINE__ << std::endl;
std::cout << __LINE__ << std::endl;
}
그리고 콘솔 인쇄
11
12
14
15
13
16
==> 잘못된 순서로 ... 전에 cout을
이것은 일식과 관련된 문제 일 가능성이 큽니다. 'std :: endl'은 실제로'flush()를 야기합니다. FYI – Avery3R
왜 두 개의 서로 다른 스트림에 인쇄 된 텍스트는 나타날 순서가 정의되어 있습니까? 아무런 보증은 없으며 콘솔에서 작업하는 것은 아마도 구현 세부 사항 일 것입니다. 똑같은 스트림에 "Info :"와 "Error :"라는 접두어를 붙이거나 인쇄하는 것만 큼 효과가 있습니다. –
각 호출마다 잠금 (뮤텍스)을 사용하고 동작 방식을 확인하려고합니다. – Mercury