Message223435
| Author |
jstewmon |
| Recipients |
jstewmon |
| Date |
2014年07月18日.21:10:00 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1405717800.93.0.311765291104.issue22007@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
Writing to sys.stdout on OS X can fail with IOError: [Errno 4] Interrupted system call.
I have observed this while trying to write to sys.stdout when SIGCHLD is received. The script below consistently reproduces the problem with python 2.7.2 on OS X 10.9.3.
import sys
import os
import signal
import subprocess
import time
children = {}
def claim_child():
pid, status = os.wait()
p = children.pop(pid)
def trap(sig, frame):
claim_child()
signal.signal(signal.SIGCHLD, trap)
running = 0
max_procs = 70
program = [sys.executable, '-c', 'import sys, time; print sys.version; time.sleep(3)']
f = sys.stdout # crashes with: IOError: [Errno 4] Interrupted system call
# f = file('/tmp/eintr.log', 'w') # works just fine
while True:
while len(children) < max_procs:
f.write('starting program: {}\n'.format(program))
p = subprocess.Popen(program)
children[p.pid] = p
time.sleep(0.05) |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2014年07月18日 21:10:00 | jstewmon | set | recipients:
+ jstewmon |
| 2014年07月18日 21:10:00 | jstewmon | set | messageid: <1405717800.93.0.311765291104.issue22007@psf.upfronthosting.co.za> |
| 2014年07月18日 21:10:00 | jstewmon | link | issue22007 messages |
| 2014年07月18日 21:10:00 | jstewmon | create |
|