-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Implement send_signal for unix child processes #141990
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
r? @ChrisDenton rustbot has assigned @ChrisDenton. Use |
cc @tgross35 as this modifies the proposed API slightly - fn send_signal(&self, signal: i32) -> Result<()>;
+ fn send_signal(&mut self, signal: i32) -> Result<()>; |
I didn't put too much thought into what I wrote there, so it's fine if it needs to change. That being said, why does this need to be @Qelxiros could you add documentation and examples here? |
You're right that it doesn't need to be mutable, so I changed it back. I do wonder why e.g. |
No it's not to do with Windows. It seems to have been a deliberate decision in the early days of rust, though I can't find any record of the thinking behind it. It was implemented in #22119 and all the implementations use |
@tgross35 could you add an unresolved question to the tracking issue regarding & vs &mut? I want to make sure it doesn't get forgotten before stabilization. |
Added. I think this implementation looks fine, just needs a squash (I'll let Chris do the final review) |
@rustbot ready |
149dd21
to
269ee72
Compare
Thanks! @bors r+ |
…r=ChrisDenton Implement send_signal for unix child processes Tracking issue: rust-lang#141975 There are two main differences between my implementation and the Public API section of the tracking issue. ~First, `send_signal` requires a mutable reference, like `Child::kill`.~ Second, `ChildExt` has `Sealed` as a supertrait, bringing it more in line with other extension traits like `CommandExt`.
Rollup of 7 pull requests Successful merges: - #138237 (Get rid of `EscapeDebugInner`.) - #140809 (Reduce special casing for the panic runtime) - #141990 (Implement send_signal for unix child processes) - #142082 (Refactor `rustc_attr_data_structures` documentation) - #142125 (Stabilize "file_lock" feature) - #142528 (clarify `rustc_do_not_const_check` comment) - #142530 (use `if let` guards where possible) r? `@ghost` `@rustbot` modify labels: rollup
@bors r- Failed the rollup at #142558 (comment). You'll need to make sure that all OSs in https://github.com/rust-lang/rust/tree/269ee72c330c21a9e0526e69fc0f85d762043d2d/library/std/src/sys/process/unix / https://github.com/rust-lang/rust/tree/68ac5abb067806a88464ddbfbd3c7eec877b488d/library/std/src/sys/process/unix have an implementation. |
@@ -152,6 +152,11 @@ impl Process { | |||
Ok(()) | |||
} | |||
|
|||
pub fn send_signal(&mut self) -> io::Result<()> { | |||
// Fuchsia doesn't have a direct equivalent for signals | |||
unimplemented!() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cc target maintainers @erickt @Nashenas88 just to double check there isn't something that makes sense here (nonblocking for this PR)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fuchsia and unsupported need a _signal: i32
argument to match the other signatures
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct, fuchsia does not support signals. Thanks for checking!
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Implement send_signal for unix child processes Tracking issue: #141975 There are two main differences between my implementation and the Public API section of the tracking issue. ~First, `send_signal` requires a mutable reference, like `Child::kill`.~ Second, `ChildExt` has `Sealed` as a supertrait, bringing it more in line with other extension traits like `CommandExt`. try-job: `dist-various*` try-job: `test-various*`
This comment was marked as outdated.
This comment was marked as outdated.
8396d56
to
9f255e9
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
Implement send_signal for unix child processes Tracking issue: #141975 There are two main differences between my implementation and the Public API section of the tracking issue. ~First, `send_signal` requires a mutable reference, like `Child::kill`.~ Second, `ChildExt` has `Sealed` as a supertrait, bringing it more in line with other extension traits like `CommandExt`. try-job: `dist-various*` try-job: `test-various*`
This comment was marked as outdated.
This comment was marked as outdated.
9f255e9
to
ec665bf
Compare
@bors2 try |
Implement send_signal for unix child processes Tracking issue: #141975 There are two main differences between my implementation and the Public API section of the tracking issue. ~First, `send_signal` requires a mutable reference, like `Child::kill`.~ Second, `ChildExt` has `Sealed` as a supertrait, bringing it more in line with other extension traits like `CommandExt`. try-job: `dist-various*` try-job: `test-various*`
So you can run yourself if needed: |
@Qelxiros can now perform try builds on this pull request |
@Qelxiros mind squashing? |
ec665bf
to
b391494
Compare
@rustbot ready |
Thanks! @bors r=ChrisDenton,tgross35 |
Tracking issue: #141975
There are two main differences between my implementation and the Public API section of the tracking issue.
First,Second,send_signal
requires a mutable reference, likeChild::kill
.ChildExt
hasSealed
as a supertrait, bringing it more in line with other extension traits likeCommandExt
.try-job:
dist-various*
try-job:
test-various*