diff options
author | LAN-TW <lantw44@gmail.com> | 2013-11-17 15:21:07 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2013-11-17 15:21:07 +0800 |
commit | 5e828344275978133f77ed535a8ed2620e94315b (patch) | |
tree | dd4771891fb6ec597394fe6483d198d0165aa473 | |
parent | 1dd20f9aa544ae0615ddf4418447d53cd598b453 (diff) | |
download | sp2013-5e828344275978133f77ed535a8ed2620e94315b.tar.gz sp2013-5e828344275978133f77ed535a8ed2620e94315b.tar.zst sp2013-5e828344275978133f77ed535a8ed2620e94315b.zip |
HW2: 確保 player 的 random_key 不會重複,且 FIFO 內沒有東西HW2
-rw-r--r-- | hw2/judge.c | 7 |
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)); |