diff --git a/judge/runpipe_test/S_closes_stdin/judge.c b/judge/runpipe_test/S_closes_stdin/judge.c index e8fa844016..06114d9e9d 100644 --- a/judge/runpipe_test/S_closes_stdin/judge.c +++ b/judge/runpipe_test/S_closes_stdin/judge.c @@ -1,14 +1,23 @@ +#define _XOPEN_SOURCE 700 + #include #include +#include +#include int main() { signal(SIGPIPE, SIG_IGN); - usleep(500000); + struct timespec req = {0}; + req.tv_nsec = 500000000L; // 0.5 seconds + nanosleep(&req, NULL); + printf("123\n"); fflush(stdout); int x; - scanf("%d", &x); + if (scanf("%d", &x) != 1) { + return 1; + } if (x == 42) return 42; return 43; diff --git a/judge/runpipe_test/S_closes_stdin/solution.c b/judge/runpipe_test/S_closes_stdin/solution.c index d602ddf9b4..6b20f9cf16 100644 --- a/judge/runpipe_test/S_closes_stdin/solution.c +++ b/judge/runpipe_test/S_closes_stdin/solution.c @@ -1,7 +1,14 @@ +#define _XOPEN_SOURCE 700 + #include +#include +#include int main() { fclose(stdin); printf("42\n"); - usleep(800000); + + struct timespec req = {0}; + req.tv_nsec = 800000000L; // 0.8 seconds + nanosleep(&req, NULL); }