summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLAN-TW <lantw44@gmail.com>2013-11-17 15:21:07 +0800
committerLAN-TW <lantw44@gmail.com>2013-11-17 15:21:07 +0800
commit5e828344275978133f77ed535a8ed2620e94315b (patch)
treedd4771891fb6ec597394fe6483d198d0165aa473
parent1dd20f9aa544ae0615ddf4418447d53cd598b453 (diff)
downloadsp2013-5e828344275978133f77ed535a8ed2620e94315b.tar.gz
sp2013-5e828344275978133f77ed535a8ed2620e94315b.tar.zst
sp2013-5e828344275978133f77ed535a8ed2620e94315b.zip
HW2: 確保 player 的 random_key 不會重複,且 FIFO 內沒有東西HW2
-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));