When a previous call to poll() has already seen the process status,
wait() should not call waitpid() again.

Should be backported to 2.2.4.
diff --git a/Lib/popen2.py b/Lib/popen2.py
index d6ff002..8a17641 100644
--- a/Lib/popen2.py
+++ b/Lib/popen2.py
@@ -83,10 +83,11 @@
 
     def wait(self):
         """Wait for and return the exit status of the child process."""
-        pid, sts = os.waitpid(self.pid, 0)
-        if pid == self.pid:
-            self.sts = sts
-            _active.remove(self)
+        if self.sts < 0:
+            pid, sts = os.waitpid(self.pid, 0)
+            if pid == self.pid:
+                self.sts = sts
+                _active.remove(self)
         return self.sts