Where is DDS forked or exec'd in the ROS2 CLI?
Objective
Running a ROS2 node launches a background process which I imagine is the DDS implementation (FastRTPS). This process is then responsible for forwarding all messages over the middleware to any other ROS2 processes.
I'm trying to find out where exactly this happens. ROS2 is not a single executable, but uses a CLI program to handle commands and then appears to take care of launching the appropriate processes. However, I've not been able to pinpoint where the background process is launched. It may be that the executable node itself forks something when using the rclcpp (or rclpy) API calls.
Does anyone have some quick insight or resources about this? I find that trying to understand the source code of ROS2 is quite difficult because of so many templates and macros and abstract interfaces.