[issue23750] Clarify difference between os.system/subprocess.call in section Replacing os.system()

2015-06-22 Thread Martin Panter

Martin Panter added the comment:

Here is a patch:

* Use different return value variable names and point out that they are encoded 
differently
* Add another bullet point about signal handling
* Fix os.system() documentation of the return value. My understanding is it is 
the C standard that does not define the return value, and Posix essentially 
means Unix.

--
keywords: +patch
stage:  - patch review
versions: +Python 2.7, Python 3.4, Python 3.5, Python 3.6
Added file: http://bugs.python.org/file39767/system-subprocess.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23750
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23750] Clarify difference between os.system/subprocess.call in section Replacing os.system()

2015-03-23 Thread Andreas Sommer

New submission from Andreas Sommer:

Reading over the section Replacing os.system() 
(https://docs.python.org/2/library/subprocess.html#replacing-os-system), one 
might assume that the return value of os.system and subprocess.call are 
equivalent.

status = os.system(mycmd +  myarg)
# becomes
status = subprocess.call(mycmd +  myarg, shell=True)

However, they are not. Example:

import sys
import os
import subprocess

print subprocess.call(false)
print os.system(false)

gives 1 and 256, respectively. Maybe this could be rephrased for clarity, or a 
hint added.

--
assignee: docs@python
components: Documentation
messages: 239028
nosy: Andreas Sommer, docs@python
priority: normal
severity: normal
status: open
title: Clarify difference between os.system/subprocess.call in section 
Replacing os.system()
type: enhancement

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23750
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23750] Clarify difference between os.system/subprocess.call in section Replacing os.system()

2015-03-23 Thread Martin Panter

Martin Panter added the comment:

Another difference is that (at least POSIX) system() blocks SIGINT and SIGQUIT 
while the child is running. Compare:

$ python3 -c 'print(Waiting); import os; print(Returned, os.system(sleep 3 
 exit 3))'
Sleeping
Returned 768
$ python3 -c 'print(Sleeping); import os; print(Returned, os.system(sleep 
3  exit 3))'
Waiting
^CReturned 2  # Hit Ctrl+C during sleep command
$ python3 -c 'print(Sleeping); import subprocess; print(Returned, 
subprocess.call(sleep 3  exit 3, shell=True))'
Sleeping
Returned 3
$ python3 -c 'print(Sleeping); import subprocess; print(Returned, 
subprocess.call(sleep 3  exit 3, shell=True))'
Sleeping
^CTraceback (most recent call last):
  File string, line 1, in module
  File /usr/lib/python3.4/subprocess.py, line 539, in call
return p.wait(timeout=timeout)
  File /usr/lib/python3.4/subprocess.py, line 1566, in wait
(pid, sts) = self._try_wait(0)
  File /usr/lib/python3.4/subprocess.py, line 1514, in _try_wait
(pid, sts) = _eintr_retry_call(os.waitpid, self.pid, wait_flags)
  File /usr/lib/python3.4/subprocess.py, line 491, in _eintr_retry_call
return func(*args)
KeyboardInterrupt
[Exit 1]

--
nosy: +vadmium

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23750
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com