Patrick José Pereira
73f3126a59
subprocess: Add missing include for std::runtime_error
...
Signed-off-by: Patrick José Pereira <patrickelectric@gmail.com >
2020-11-18 11:58:15 -03:00
TheAssassin
b6a1ba290e
Close file descriptors when process has exited
2020-10-07 04:37:50 +02:00
TheAssassin
3c21d86574
Improve file descriptor connection
...
Instead of passing the fd array for no real reason, the actual fd is passed from now on. The lambda now also logs error message received via errno.
2020-10-07 04:25:14 +02:00
TheAssassin
2554b35403
Check return code of ::close
...
It appears to be pretty common not to check the return code, but it's a serious programming flaw.
2020-10-07 03:37:00 +02:00
TheAssassin
bfcde878e2
Log error when pipe creation fails
2020-10-05 22:35:15 +02:00
TheAssassin
407ecc408d
Read subprocesses' pipes until they're empty
2020-09-22 13:04:23 +02:00
TheAssassin
1072c6d9f0
Improve check_output performance
2020-08-31 05:08:24 +02:00
TheAssassin
6621f1edf7
Forgot to add pipe reader to CMake
2020-08-31 04:20:40 +02:00
TheAssassin
ee73ac6c8e
Use new pipe_reader in subprocess's check_output
...
The class will read until the process quits (or until memory's up).
TODO: reduce load on CPU with some sleep (right now, it's pretty much some busy waiting)
2020-08-31 04:20:03 +02:00
TheAssassin
66691ee882
Add new helper class pipe reader
...
Implements synchronous, non-block reading from pipes.
2020-08-28 17:36:56 +02:00
TheAssassin
e91b459fce
Use std::distance instead of pointer arithmetics
2020-08-08 11:54:58 +02:00
TheAssassin
3f86f178a5
Use classic C string handling
...
That way, we don't have to allocate memory, and it's also shorter.
2020-08-08 11:49:17 +02:00
TheAssassin
a8975e0e50
Clean up memory in case exec* fails
...
Prevents memory leaks.
2020-08-08 11:44:21 +02:00
TheAssassin
6c47939fdc
Fix initialization bug
2020-08-08 11:34:02 +02:00
TheAssassin
484ff3f004
Fix C string processing bug
...
Well, makes sense now that I look at it... but caused a couple of hours worrying why my child processes were crashing until I noticed it'd only happen if I specified custom environment variables...
2020-08-08 00:30:28 +02:00
TheAssassin
8b604871cc
Refactor duplicate code into static method
2020-08-08 00:30:28 +02:00
TheAssassin
88dd09f2d1
Set all variables to defaults in header
2020-08-08 00:30:28 +02:00
TheAssassin
5feef7880e
Try to fix waitpid issues
2020-08-08 00:30:28 +02:00
TheAssassin
37aa37f5fe
Fix behavior of close()
...
The implementation was obviously wrong/incomplete.
2020-08-07 21:22:58 +02:00
TheAssassin
c895a1dc59
Add kill and poll features for processes
2020-08-07 21:22:58 +02:00
TheAssassin
80a5667ca7
Check waitpid() for errors
2020-08-07 21:22:58 +02:00
TheAssassin
2425ccc832
Extract process handling into separate class
...
Needed for plugins' subprocess handling.
2020-08-07 21:22:58 +02:00
TheAssassin
e1f6da17b4
Add basic subprocess micro library
...
cpp-subprocess does not work when linked statically for some weird reason. Therefore, we're going to ship our own.
2020-08-07 21:22:58 +02:00