summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hw2/judge.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/hw2/judge.c b/hw2/judge.c
index 5e1da77..cb0d90c 100644
--- a/hw2/judge.c
+++ b/hw2/judge.c
@@ -192,8 +192,15 @@ int main (int argc, char* argv[]) {
if (t) {
write (ffd[i].fd, lastmsg, lastlen);
} else {
+ while (read (ffd[i].fd, trash_buf, 512) > 0);
fdata_clear (&ffd[i]);
ffd[i].key = random ();
+ for (int j = 1; j < i; j++) {
+ if (ffd[i].key == ffd[j].key) {
+ ffd[i].key = random ();
+ j = 0;
+ }
+ }
ffd[i].pid = fork ();
if (ffd[i].pid < 0) {
fprintf (stderr, "Cannot fork: %s\n", strerror (errno));