Portál AbcLinuxu, 8. května 2025 04:22
echo "ahoj" | perl -ne 'print $_; system(vim, /tmp/file.test) 'Potřebuji nějak pracovat se vstupem ze STDIN (zde puze print) a pak použít system(), který dědí filedeskriptor napojený na rouru a dle toho se program vim zachová tak, že očekává vstup přes STDIN, k čemuž by ale potřeboval místo zadaného souboru pomlčku; takže si zanadává a v mém případě rozbije terminál. Zkoušel jsem zavřít STDIN, ale to nepomůže, protože pipe mód (zřejmě stále platné /proc/$$/fd0) zůstane. Je nějaký způsob jak před system() nebo exec() zrušit pipe mód a program spustit normálně?
echo "ahoj" | perl -ne 'print $_; system("vim /tmp/file.test </dev/tty")'Pokud už řídící terminál nemáš, můžeš použít expect, nebo si nastudovat jak se pracuje s pseudoterminálem.
echo "ahoj" | perl -ne 'print $_; open STDIN, "/dev/tty" ;system qw(vim /tmp/file.test)'Takže díky moc, informace pomohla.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.