Używam Boost 1.65, nie zmienił kodu, zaktualizowany Boost do wersji 1.71, a teraz nagle boost::process::child("command-in-path") nie dziedziczy środowiska procesu wykonującego. Jak mogę odzyskać zachowanie, czy jest to możliwe bez analizowania polecenia za każdym razem, aby znaleźć wykonywalną ścieżkę?

1
Yuki 16 luty 2021, 18:18

1 odpowiedź

Najlepsza odpowiedź

Nie sprawdziłem, czy zachowanie faktycznie zmieniło się, ale wiem, że istnieje sposób na wyraźne pozwolenie na zwiększenie poszukiwania ścieżki:

Należy Dlatego można się spodziewać search_path, aby być wyłączony domyślnie (z wyjątkiem interfejsu system, który jest tradycyjnie niepewny)

Live on Wandbox

#include <boost/process.hpp>

int main() {
    namespace bp = boost::process;

    bp::child c(
        bp::search_path("date"),
        std::vector<std::string> { "+%s" });
    c.wait();
}
2
sehe 16 luty 2021, 15:42