Commit Graph

23 Commits

Author SHA1 Message Date
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