This topic is regarding a heavily revised version of my former libprocinfo library.
I would like to propose the the C++ standard / STL developers that they add support for cross-platform getting of process information, (and in some cases setting, but only for the current process for security reasons). I am on my way to writing my own process library, and I intend to support a lot of platforms, (however I do not intend to support mobile, console, etc), only desktop and server are in my interest due to costs and time. I would like to contact these people with the intention to not only propose this be done, but also help them do it because it is an area of C++ programming I find very interesting and fun to work with.
Any idea how to get in touch with these guys? Anyone here have special ties or connections to these people? Where do they exist on the internet? They seem very mysterious and only the most worthy can get a hold of them, let alone know anything about them, thus I'd really appreciate this not to be another game of waiting a million years hoping for them to respond but they never do, like my experience with becoming a FreeBSD contributor, getting a hold of the development teams of such things for me has not been all that great. It's as if they don't want their projects to get healthier from a growing number of contributors by making it as hard as possible to make themselves accessible. The best experience I had with this is the developer of Kdialog who added a feature I requested but the rest of the KDE team was not so responsive to my desire to contribute to them as well.
Not to complain or anything, i just don't understand why these things are so complicated and it really seems it is made this way very intentionally, which is a bit odd. Here's my code currently:
github.com
I also included one function that is unrelated to process information, ProcIdKill(), which will kill a process based on its process id. I plan to expand this library to also allow for process execution, process group creation and management, getting the time stamp a process was spawned, causing the current process to wait for another process id or process group id to end, get the username a process id is running under, whether run as root/admin, and enumerating the tid's (thread id's associated with given process id, as well as getting all the tid's running on the current user session) and more stuff like that.
I'd also like to include functions which are windowing related, specifically enumerating window id's, normally useful for shell scripting, on platforms where a global window handle is used and not represented as an integer, but instead a pointer, it will be cased to an integer with the use of std::uintptr_t. macOS, unlike popular belief, has a global window id datatype as well, it is a CGWindowID, (unsigned long) but you can't do as much with it as you can a local window pointer (NSWindow *) which you may convert between the two for the current application in Objective-C++ with windowWithWindowNumber or windowNumber. Enumerating all Windows running on the current session, which pid created them, and on platforms that have no default windowing system like the *BSD's, Linux, and (I assume?) Solaris and Solaris-likes such as OpenIndiana, etc we would then use linkage with libffi or some similar method to call X11 and Wayland related code depending on availability though fails with an error code when no display is found, with an X11 fallback when WAYLAND_DISPLAY is empty or doesn't exist in the process environment block of the current application. Also, if I am looking for contributors, if any FreeBSD devs want to help, please do. We can discuss FreeBSD related code in this topic, however, keep the discussion of other platforms elsewhere and not on the FreeBSD forums as the rules go.
The nice thing about calling X11 and Wayland code with libffi is you won't need the X11 or Wayland dependencies installed to use this library, it will just fail safely.
I only mention in the OP other platforms to keep everyone in the loop of what my plan is and how this stuff will work.
Thanks!
Samuel
I would like to propose the the C++ standard / STL developers that they add support for cross-platform getting of process information, (and in some cases setting, but only for the current process for security reasons). I am on my way to writing my own process library, and I intend to support a lot of platforms, (however I do not intend to support mobile, console, etc), only desktop and server are in my interest due to costs and time. I would like to contact these people with the intention to not only propose this be done, but also help them do it because it is an area of C++ programming I find very interesting and fun to work with.
Any idea how to get in touch with these guys? Anyone here have special ties or connections to these people? Where do they exist on the internet? They seem very mysterious and only the most worthy can get a hold of them, let alone know anything about them, thus I'd really appreciate this not to be another game of waiting a million years hoping for them to respond but they never do, like my experience with becoming a FreeBSD contributor, getting a hold of the development teams of such things for me has not been all that great. It's as if they don't want their projects to get healthier from a growing number of contributors by making it as hard as possible to make themselves accessible. The best experience I had with this is the developer of Kdialog who added a feature I requested but the rest of the KDE team was not so responsive to my desire to contribute to them as well.
Not to complain or anything, i just don't understand why these things are so complicated and it really seems it is made this way very intentionally, which is a bit odd. Here's my code currently:
xProcess/crossprocess.cpp at main · time-killer-games/xProcess
Cross-Platform Process Functionality. Contribute to time-killer-games/xProcess development by creating an account on GitHub.
I also included one function that is unrelated to process information, ProcIdKill(), which will kill a process based on its process id. I plan to expand this library to also allow for process execution, process group creation and management, getting the time stamp a process was spawned, causing the current process to wait for another process id or process group id to end, get the username a process id is running under, whether run as root/admin, and enumerating the tid's (thread id's associated with given process id, as well as getting all the tid's running on the current user session) and more stuff like that.
I'd also like to include functions which are windowing related, specifically enumerating window id's, normally useful for shell scripting, on platforms where a global window handle is used and not represented as an integer, but instead a pointer, it will be cased to an integer with the use of std::uintptr_t. macOS, unlike popular belief, has a global window id datatype as well, it is a CGWindowID, (unsigned long) but you can't do as much with it as you can a local window pointer (NSWindow *) which you may convert between the two for the current application in Objective-C++ with windowWithWindowNumber or windowNumber. Enumerating all Windows running on the current session, which pid created them, and on platforms that have no default windowing system like the *BSD's, Linux, and (I assume?) Solaris and Solaris-likes such as OpenIndiana, etc we would then use linkage with libffi or some similar method to call X11 and Wayland related code depending on availability though fails with an error code when no display is found, with an X11 fallback when WAYLAND_DISPLAY is empty or doesn't exist in the process environment block of the current application. Also, if I am looking for contributors, if any FreeBSD devs want to help, please do. We can discuss FreeBSD related code in this topic, however, keep the discussion of other platforms elsewhere and not on the FreeBSD forums as the rules go.
The nice thing about calling X11 and Wayland code with libffi is you won't need the X11 or Wayland dependencies installed to use this library, it will just fail safely.
I only mention in the OP other platforms to keep everyone in the loop of what my plan is and how this stuff will work.
Thanks!
Samuel