Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upExpand the scope of std::process #941
Comments
alexcrichton
added
the
A-libs
label
Mar 5, 2015
This was referenced Mar 5, 2015
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Mar 5, 2015
alexcrichton
referenced this issue
Mar 5, 2015
Merged
std: Deprecate the old_io::process module #23079
Manishearth
added a commit
to Manishearth/rust
that referenced
this issue
Mar 6, 2015
This comment has been minimized.
This comment has been minimized.
l0kod
commented
Mar 6, 2015
|
|
This comment has been minimized.
This comment has been minimized.
|
Certainly, I consider that to fall under the "It is not possible to specify a custom I/O handle as one of the stdio descriptors" umbrella where we're not really leaking them per-se but you should be able to specify that an existing file descriptor should exist as another in the new process. |
alexcrichton
referenced this issue
Mar 10, 2015
Closed
File descriptors created by Rust should be automatically close-on-exec #23233
This comment has been minimized.
This comment has been minimized.
l0kod
commented
Mar 21, 2015
|
A post-fork function (cf. #579 (comment)) seems to need properties similar to |
This comment has been minimized.
This comment has been minimized.
|
Need to add a way to wait for children with a timeout. |
This comment has been minimized.
This comment has been minimized.
genodeftest
commented
May 29, 2015
|
I need a way to check whether a child process is still running or not. |
This comment has been minimized.
This comment has been minimized.
l0kod
commented
Jun 20, 2015
|
Is there any plan to re-add cc @aturon |
This was referenced Jun 21, 2015
bors
added a commit
to rust-lang/rust
that referenced
this issue
Aug 4, 2015
This comment has been minimized.
This comment has been minimized.
pnathan
commented
Oct 11, 2015
|
Hi, I think this is the relevant RFC, just let me know if it isn't and I'll remove my comment and file elsewhere. About 1 year ago, I had a nice piece of code[0], which let me run a subprocess and provide streaming updates of its stdout/stderr descriptors. It is code which is intended for a long-running system: e.g., commands that run for hours and the controlling job needs to respond rather than block. Right now, Process::Command & family do not appear to support this ability. I think with certain abuses of the borrow checker, I can kludge my way to part of this, but it's a lot of fiddly work when really, the original API supported what I need. I'd like to see functionality in std::process explicitly for this case. [0] https://gist.github.com/pnathan/30e283cbcf2bf4f46346#file-action-lib-rs-L134 |
This comment has been minimized.
This comment has been minimized.
|
@pnathan I only briefly scanned your code, but why exactly can't you just read from the |
This comment has been minimized.
This comment has been minimized.
|
@pnathan I agree with @BurntSushi that what you did previously should definitely be possible with today's |
This comment has been minimized.
This comment has been minimized.
pnathan
commented
Oct 12, 2015
|
@alexcrichton @BurntSushi - hmm. Maybe I got into a corner with reading from the pipes, certainly has happened before. However, I still don't see any way in the API to check if a process is dead, only |
This comment has been minimized.
This comment has been minimized.
|
We could pretty easily add a nonblocking version of wait but I don't think we do right now. |
This comment has been minimized.
This comment has been minimized.
|
@pnathan yeah there's not currently a way to do that, but that's largely because it's quite tricky! On Unix unfortunately In the meantime though so long as you're careful with calling wait you can use this repo in the meantime which should allow you to wait with a timeout of 0. |
This comment has been minimized.
This comment has been minimized.
l0kod
commented
Oct 12, 2015
On Linux, the PID is only recycled if the parent waits for the child exit code, otherwise it is transform into a zombie process. |
This comment has been minimized.
This comment has been minimized.
|
Ah right of course! |
This comment has been minimized.
This comment has been minimized.
emilliken
commented
Oct 25, 2015
|
Another one for the list above- It is not possible to specify a custom I/O handle as one of the NON-stdio descriptors (extra_io) |
This comment has been minimized.
This comment has been minimized.
|
cc #1359, an RFC to add a few extra pieces of functionality on Unix |
This comment has been minimized.
This comment has been minimized.
|
What about process groups or child processes of some |
This comment has been minimized.
This comment has been minimized.
|
With Linux, it'd be good to expose the |
This comment has been minimized.
This comment has been minimized.
|
With #1359 now implemented in rust-lang/rust#31409 (and tracked for stabilization by rust-lang/rust#31398) this issue should now basically be entirely possible using libstd itself. The original motivation has basically now been fulfilled, so I'm going to close this. There are perhaps some more specific APIs which could be added or bound, but those likely want to have separate issues or start out as crates on crates.io. |
alexcrichton
closed this
Feb 11, 2016
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton commentedMar 5, 2015
Like #939, this issue is intended to collect information about the expansion of the
std::processmodule. As with most of the rest of the I/O reform, the goal ofstd::processwas originally to be quite conservative. Over time we knew we were going to want to expand the module after we got experience using it as well as seeing how this sort of expansion plays out in the bigger picture.I'll list some pieces below of parts I think that could be expanded, and I'll try to keep the list updated over time:
As with #939 I don't plan on writing an RFC about this expansion in the near future, but I'd like one place to collect information about how
std::processcan be expanded.