Попытка передать аргумент в exe-файл с помощью php popen и чтение его из fread, но не может прочитать правильный вывод - PullRequest
0 голосов
/ 25 апреля 2019

Это простое консольное приложение на c #, для добавления двух чисел, я вызываю этот exe из php и передаю 2 аргумента 5 и 6, ожидая, что вывод будет суммой двух чисел, но я получаю вывод как "x: \ Program ' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл. " Хотя файл успешно выполнен. Кажется проблема с фредом.

 PHP:

  <?php  

  $handle = popen(dirname(__FILE__) . '/sum.exe 5 6 2>&1', 'r');
  $read ='';

  while (!feof($handle)) 
  {
     $read .= fread($handle, 8192);
  }
  echo $read;
  pclose($handle);
 ?>

C#:

static void Main(string[] args)
{
  int result = Convert.ToInt32(args[0]) + Convert.ToInt32(args[1]);
  Console.Write(result.ToString());
}

Однако, если я возвращаю простую строку из c # и затем вызываю ее, хотя это exe из php без каких-либо аргументов, то это работает нормально. например

 static void Main(string[] args) 
 { 
  Console.Write("check"); 
 }

   <?php 
     $handle = popen(dirname(FILE) . '/sum.exe', 'r'); 
     $read =''; 
      while (!feof($handle)) { 
        $read .= fread($handle, 8192); 
       } 
     echo $read; 
     pclose($handle); 
    ?>
...