2012-05-18 2 views
2

제목과 마찬가지입니다. 나는 gets(buffer)을 무한 루프에 가지고 있으며, 이는 gets(buffer)에서 멈추고 무한 대기 상태입니다. gets(buffer) 기다려야 만 STDIN의 입력에 3 초가 걸리고, 버퍼에 문자열이 없으면 다시 컨트롤을 전달하는 등의 작업을 할 수 있습니다.
C는 언어입니다
미리 감사드립니다 !!gets()는 C에서 STDIN의 입력에 대해서만 특정 시간 만 기다려야합니까?

+2

'gets'는 안전하지 않으므로'gets' 대신'fgets'을 사용하지 마십시오. 버퍼가 너무 작 으면 버퍼 오버플로가 발생합니다. – Gandaro

+2

절대'gets'를 사용하지 마십시오. ** 절대로 ** gets를 사용하지 마십시오. –

+0

충분히 말할 수 없기 때문에, ** 결코 전에 ** 사용하지 마십시오. **이제까지**! – Dave

답변

3

표준 gets() 기능에는 시간 초과 기능이 없습니다. 표준 C에서 I/O 작업에서 시간 초과를 구현하는 방법은 select() function입니다.

+0

소켓으로 STDIN을 사용하여 select()를 구현하는 방법은 무엇입니까? select()에서 timeout - tv_sec -을 설정하면 잠시 동안 내가하고 싶은 것을 할 수 있습니까? – azrahel

+0

@azrahel은'STDIN_FILENO'을 봅니다. – Dave