Fwrite to stdout in childprocess not shown
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
it won't write text there so you don't know there is a prompt. (fwrite(STDOUT, $text) also i get a timeout (execute timeout) in my own framework which holds some more code. and if i write something to stdin it wont get accepted / continue executing script.
test1.php
<?php
$command = escapeshellcmd(PHP_BINARY) . ' ' . escapeshellarg(__DIR__ . '/test2.php');
var_dump(exec($command, $output));
var_dump($output);
test2.php
<?php
function my_readline($text='') {
fwrite(STDOUT, $text);
return trim(fgets(STDIN));
}
$a = my_readline('test: ');
echo $a;
the fwrite to STDOUT isn't executed if i run test1.php
PHP Version
8.2
Working in php 7.4
Operating System
Debian 11.6
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduzieren Sie das Verhalten mit den Skripten test1.php und test2.php des Issues unter PHP 8.2 auf Debian 11.6, und vergleichen Sie die stdout-Eingabeaufforderung und die stdin-Verarbeitung des Kindprozesses mit PHP 7.4. Verfolgen Sie anschließend das Verhalten von exec und der I/O des Kindprozesses, um zu ermitteln, warum fwrite(STDOUT, $text) nicht sichtbar ist oder warum die Eingabe nicht fortgesetzt wird; abgeschlossen ist die Aufgabe, wenn die Eingabeaufforderung angezeigt wird und Eingaben ohne Timeout akzeptiert werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- cli
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100