Musiałem przekazać stdin nadrzędnego procesu C ++ do skryptu, który uruchamia, i zwrócić standardowe wyjście wykonywanego skryptu z powrotem do procesu C ++. Nie ma problemu z wyjściem standardowym, robię to z funkcją popen, ale jak mogę sprawić, by skrypt php zobaczył stdin procesu, który go uruchamia?
Co ja robię źle?
//This is c++:
int main()
{
string ref = "php7.2 /home/anton/test.php";
FILE* pipe;
char buf[1024];
string REQ = "123456";
fputs(REQ.c_str(), stdin);
if(!(pipe = popen(ref.c_str(), "r")))
std::cerr « "Error creating a pipe" « std::endl;
while(fgets(buf, 1023, pipe))
{
std::cout « buf;
}
pclose(pipe);
return 0;
}
//php script
<?php
$a;
parse_str(file_get_contents("php://stdin"), $a);
echo a;
?>
0
BERTOLDO
17 grudzień 2019, 00:03
Należy pamiętać, że C i C++ to różne języki i rozwiązania mogą się różnić. Użyj tylko odpowiedniego znacznika języka.
– kaylum
17 grudzień 2019, 00:10
1 odpowiedź
Sprawdź funkcję pipe () i zobacz, czy robi to, co chcesz. Użyj dup2, aby przekierować stdin na koniec zapisu potoku.
-1
eric
17 grudzień 2019, 00:20
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.