-
Notifications
You must be signed in to change notification settings - Fork 141
Open
Description
On macOS 15.6.1 M3 the program below exits due to EOF flag being raised on std::cin after subprocess finishes.
#include <boost/process.hpp>
#include <boost/asio.hpp>
#include <cstdio>
#include <string>
#include <iostream>
#include <future>
#include <vector>
namespace asio = boost::asio;
namespace bp = boost::process::v2;
void runCommand(const std::string &cmd);
int main(int argc, char *argv[]) {
std::vector<std::future<void>> tasks;
std::string line;
while(true) {
if (!std::getline(std::cin, line)) {
if (std::cin.eof()) {
break;
}
std::printf("Error reading input?\n");
std::cin.clear();
continue;
}
if (line == "r") {
tasks.push_back(std::async(std::launch::async, []() {
runCommand("/bin/ls");
}));
}
}
return 0;
}
void runCommand(const std::string &cmd) {
try {
std::printf("Running subprocess: %s\n", cmd.c_str());
asio::io_context ctx;
bp::process subProcess(ctx, cmd, {}, bp::process_stdio{nullptr});
subProcess.wait();
std::printf("Finished running subprocess with exit code %d\n", subProcess.exit_code());
} catch (const std::exception &ex) {
std::printf("Error running subprocess: %s\n", ex.what());
}
}Compiler
Apple clang version 17.0.0 (clang-1700.0.13.5)
Target: arm64-apple-darwin24.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Boos version (from vcpkg)
1.89.0
Example run:
boost-process git:(cpp-boost-process) ✗ ./build/main
r
Running subprocess: /bin/ls
CMakeLists.txt README.md build main.cpp vcpkg.json vcpkg_installed
Finished running subprocess with exit code 0
Metadata
Metadata
Assignees
Labels
No labels