Comments (4)
With shell=True
, the script signals the shell (e.g. bash), which will ignore SIGINT
. In this case, SIGABRT
kills the shell and leaves the sleep 1d
command running. To send SIGINT
to the child of the shell as well, execute the shell as the group leader of a new process group by passing the Popen
argument process_group=0
, and signal the group via os.killpg(process.pid, signal.SIGINT)
.
from cpython.
Thanks! Yup, that worked.
I had to slightly change your suggestion, using https://stackoverflow.com/a/22582659/7829525 + looking at this code:
https://github.com/python/cpython/blob/v3.10.12/Modules/_posixsubprocess.c#L554-L555
Using Popen(*, start_new_session=True)
and os.killpg(os.getpgid(process.pid), signal.SIGINT)
seems to fix it.
Patch applied to code similar to above:
EricCousineau-TRI/repro@f2aca66
from cpython.
The process_group
option was added in 3.11. Using a new process group is my preferred way to solve this for a non-interactive process. Creating a new session works as well. Note that with a new session, the child process won't have a controlling terminal (e.g. opening "/dev/tty" will fail), but that shouldn't matter for a non-interactive command.
from cpython.
@eryksun gave a good explanation of the behavior and proposed a solution.
subprocess works as expected. I close the issue.
from cpython.
Related Issues (20)
- Using internal tokenize module's TokenizerIter in multiple threads crashes
- Missing type checking on `maxsize` arg of `queue.Queue` class during initialization HOT 8
- Optimize random.choice when there is just one item HOT 4
- SIGSEGV with generators in free-threaded build HOT 6
- it is not detecting in cmd HOT 1
- Tier 2 optimizer: constant propagate through attribute loads HOT 2
- Tier 2 optimizer: refactor to reuse constant symbols
- Python 3.13 beta 2 build fails on Windows when using both `--experimental-jit` and `--disable-gil` HOT 7
- Compiler RecursionError more likely to occur in 3.13 HOT 1
- Multiple lines f-string with non-ASCII breaks tokenize.generate_tokens in 3.12.4 HOT 6
- Incorrect use of the :class: role with the "()" suffix
- PYTHON_BASIC_REPL is ignored by interactive inspect HOT 2
- Add a limit to `string.zfill` so it will raise an error to lengths bigger that the int in the brackets HOT 4
- Add option for "pydoc -b" to open new browser window.
- `idlelib/help.html` is outdated HOT 7
- `enum.nonmember` type-decays Flag values HOT 11
- no_redundant_jumps: Assertion `0' failed HOT 7
- Test w/ WASI SDK >=22 HOT 17
- Test w/ wasmtime 21
- test_audit.test_http is running even if the 'network' resource is not enabled
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cpython.