3 초마다 (hello world와 같은) 표시 방법을 알아낼 수 없습니다. 리눅스에서 gcc 컴파일러로 C 프로그래밍 만하고 있습니다. Ctrl + c로 중지 할 수 있습니다. 난 내 프로젝트로 코드를 조작하는 가장 단순하고 쉬운 방법이 필요하다.3 초마다 무엇인가 표시
미리 감사드립니다.
3 초마다 (hello world와 같은) 표시 방법을 알아낼 수 없습니다. 리눅스에서 gcc 컴파일러로 C 프로그래밍 만하고 있습니다. Ctrl + c로 중지 할 수 있습니다. 난 내 프로젝트로 코드를 조작하는 가장 단순하고 쉬운 방법이 필요하다.3 초마다 무엇인가 표시
미리 감사드립니다.
당신은 그 표준 출력에 문제로 실행할 수는 일반적으로 구현 배치 최대 출력 편리 때까지 그것을 작성하는 것을 의미한다 버퍼링된다. 3 초마다 (그리고 sleep(3)
이 좋은 방법이다.) 3 초마다 나타나지 않는다면, fflush(stdout);
을 입력하거나`fprintf (stderr, something) 엔");.
sleep(3);
sleep
함수는 프로그램이 돌아 오기 전에 X 초 동안 기다립니다. 이 명령은 실행 사이에 있으므로 3 초마다 정확하게 명령을 실행하지는 않지만 대부분의 목적에 충분히 근접합니다. 또한 일부 플랫폼은 usleep
입니다. 여기서 u는 더 많은 해상도를 얻을 수있는 마이크로를 의미합니다. 자세한 내용은 설명서 페이지를 참조하십시오.
답장을 보내 주셔서 감사합니다. 우리는 특별한 헤더가 필요합니까? – Devyn
'unistd.h' : http://www.opengroup.org/onlinepubs/000095399/functions/sleep.html –
일반적인 접근법은 무한 루프 (while (1) { ... }
)를 작성하고 매틱마다 프로그램 실행을 일시 중지하는 것입니다.
일시 중지하려면 sleep
함수를 표준 라이브러리에서 사용할 수 있습니다. 수면 시간을 지정할 수있는 sleep
대신에 nanosleep
함수를 사용하면 더 나은 정밀도를 얻을 수 있습니다. 당신은 당신이 outpu 문자열에 개행 문자 (\n
)을 추가하지 않는 문자열이 먼저 버퍼에 인쇄하고 버퍼가 가끔 입니다 때문에, 당신이 가장 가능성이, 아무것도 볼 것
#include <stdio.h>
#include <time.h>
int main()
{
struct timespec t = { 3/*seconds*/, 0/*nanoseconds*/};
while (1){
printf("Wait three seconds and...\n");
nanosleep(&t,NULL);
fflush(stdout); //see below
}
}
주가에를 플러시 터미널 (일반적으로 개행을 인쇄 할 때 발생하지만 모든 시스템에서 플러시를 보장 할 수는 없습니다). 그렇기 때문에 fflush
전화를 추가하는 것이 좋습니다.
setvbuf() 기능을 사용하여 스트림의 버퍼 유형을 제어 할 수 있습니다. 기본적으로 파일을 참조하는 스트림은 블록 버퍼이며 terine은 라인 버퍼링 (stdout) 또는 버퍼링되지 않음 (stderr)입니다.
의 printf에는 \ n이 없다는 것을#include <stdio.h>
int main(int argc, char* argv[]) {
setvbuf(stdout, NULL, _IONBF, 0);
while (1) {
printf("Wait 3 seconds... ");
sleep(3);
}
}
참고. setvbuf() 호출을 주석 처리하면 버퍼를 채운 후 모든 출력을 한 번에 볼 수 있습니다 (보통 1024 바이트).
은 멀리 떨어진,하지만 난 모든 시간을 사용하는 기술은 /usr/bin/watch
를 사용하여 매일 N초를 반복 한 번 뭔가를 표시하는 프로그램을 작성하는 것입니다. 그렇게 많이 재사용됩니다.
나를 구하십시오. 모든 변경 사항을 표시하려면 fflush (stdout)를 사용해야합니다. – Devyn
@Devyn, 아마도이 대답을 대신 받아 들여야합니까? –