2014-09-19 9 views
-2

C++에서 "main"경로에 usleep을 사용하고 전에 out 함수를 호출하십시오.sleep 및 usleep이 잘못 시작됨

out(); 
usleep(4000000); 

out 그냥 화면에 무엇인가를 인쇄합니다. 불행히도 out() 함수 호출은 usleep 명령 이전이지만 인쇄는 4 초 후에 만 ​​화면에 나타납니다. 나는 라스베가스와 함께 나무 딸기에서 일한다. 처음에는 그 기능이 아닌가요? out(); usleep이 시작되지만 다른 길은 시작됩니까?

+2

'out()'이 무엇인지 알아두면 도움이 될 것입니다. – Galik

+4

출력 버퍼를'out()'에 플러시 할 필요가있을 것입니다. –

답변

3

C++에서는 IO 시간을 줄이기 위해 출력을 버퍼링했습니다. 즉, 화면/디스크에 기록하는 호출이 항상 실제 장치에 쓰는 것은 아니라는 의미입니다.

의 예를 들어이 코드를 보자 "는"가 화면에 각 시간을 기록 할 경우

for (int x = 0; x < 10000; x++) 
    std::cout << "a"; 

, 그것은 오랜 시간이 걸릴 것입니다. 대신 전체 버퍼는 n 문자마다 작성됩니다. 이 같은

사용 표준 : 높이 :

:

std::cout << std::flush; 

표준 :: endl의도 플러시를 사용하는 화면이 아닌 전체 버퍼를 쓰기 위해

당신은 몇 가지 옵션이 있습니다

std::cout << std::endl; 
+0

위대한, 그 작품, 고마워 :-) 나는 명령과 같은 문제가 outfile.write (버퍼, 10); 이것도 플러시 같은 것이 있습니까? –

+0

'outfile.sync()' –

+0

같은 방법으로 일하는 것이 밝혀졌습니다. 감사합니다. 몇 시간 동안 혼자 노력했습니다. :-) !! 이게 어떻게 작동 : outfile.write (buffer, 10) 대신 사용합니다 : string buffer = "test"; outfile << 버퍼 << 플러시; –