Skip to content

Expose platform-specific process file descriptors #101

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

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

jakepetroules
Copy link
Contributor

@jakepetroules jakepetroules commented Jun 30, 2025

Expose the pidfd on Linux and process/thread HANDLEs on Windows. This is necessary for interop with certain platform-native APIs, especially on Windows. pidfds are also gaining the ability to be used for more and more with each Linux kernel release.

One test has been introduced which shows how this API could be used to associate a subprocess with a Job Object using the Windows API, and for Linux, a "test" that shows one use case for access to the raw fd, which is to read the globally unique (to the boot session) identifier for the process, allowing processes sharing the same PID to be distinguished.

FreeBSD also has the concept of process file descriptors, and would expect to expose the same ProcessIdentifier API as for Linux. This may spread to other platforms in the future.

--

Somewhat related article with some good info: https://gaultier.github.io/blog/way_too_many_ways_to_wait_for_a_child_process_with_a_timeout.html

Base automatically changed from eng/PR-freebsd to main June 30, 2025 20:54
@jakepetroules jakepetroules force-pushed the eng/PR-platform-handles branch from eba918b to e0559da Compare July 1, 2025 00:43
Copy link
Contributor

@iCharlesHu iCharlesHu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This API changes needs to be discussed

@jakepetroules jakepetroules force-pushed the eng/PR-platform-handles branch from e0559da to e65a537 Compare July 30, 2025 00:07
@jakepetroules jakepetroules changed the title Introduce PlatformHandles API Expose platform-specific process file descriptors Jul 30, 2025
@jakepetroules jakepetroules force-pushed the eng/PR-platform-handles branch from e65a537 to 37a1e4e Compare July 30, 2025 22:49
iCharlesHu and others added 8 commits August 1, 2025 03:21
…r Linux

# Conflicts:
#	Sources/Subprocess/API.swift
Expose the pidfd on Linux and process/thread HANDLEs on Windows. This is necessary for interop with certain platform-native APIs, especially on Windows. pidfds are also gaining the ability to be used for more and more with each Linux kernel release.

One test has been introduced which shows how this API could be used to associate a subprocess with a Job Object using the Windows API, and for Linux, a "test" that shows one use case for access to the raw fd, which is to read the globally unique (to the boot session) identifier for the process, allowing processes sharing the same PID to be distinguished.

FreeBSD also has the concept of process file descriptors, and would expect to expose the same ProcessIdentifier API as for Linux. This may spread to other platforms in the future.
@jakepetroules jakepetroules force-pushed the eng/PR-platform-handles branch from 37a1e4e to f500aa9 Compare August 1, 2025 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants