Fwrite to stdout in childprocess not shown
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.1k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
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
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le comportement avec les scripts test1.php et test2.php de l’issue sous PHP 8.2 sur Debian 11.6, en comparant l’invite sur stdout et la gestion de stdin du processus enfant avec PHP 7.4. Suivez ensuite le comportement de exec et des E/S du processus enfant afin d’identifier pourquoi fwrite(STDOUT, $text) n’est pas visible ou pourquoi la saisie ne se poursuit pas ; le travail est terminé lorsque l’invite est affichée et que la saisie est acceptée sans timeout.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100