| 186 | return output |
| 187 | |
| 188 | async def communicate(self, input=None): |
| 189 | if self.stdin is not None: |
| 190 | stdin = self._feed_stdin(input) |
| 191 | else: |
| 192 | stdin = self._noop() |
| 193 | if self.stdout is not None: |
| 194 | stdout = self._read_stream(1) |
| 195 | else: |
| 196 | stdout = self._noop() |
| 197 | if self.stderr is not None: |
| 198 | stderr = self._read_stream(2) |
| 199 | else: |
| 200 | stderr = self._noop() |
| 201 | stdin, stdout, stderr = await tasks.gather(stdin, stdout, stderr) |
| 202 | await self.wait() |
| 203 | return (stdout, stderr) |
| 204 | |
| 205 | |
| 206 | async def create_subprocess_shell(cmd, stdin=None, stdout=None, stderr=None, |