Portál AbcLinuxu, 12. května 2025 08:18
int main() { int c_p[2], p_c[2]; char buffer[MAX_BUF] = "A"; char ret[] = "root"; char *arg[] = { "ftp", "10.20.70.42", NULL }; pipe(p_c); pipe(c_p); if (!fork()) { /* potomek */ dup2(c_p[1], 1); /* presmerovani stdout k rodici */ dup2(c_p[1], 2); /* presmerovani stderr k rodici */ dup2(p_c[0], 0); /* presmerovani stdin od rodice */ execvp(arg[0], arg); /* pusti FTP */ } else { /* rodic */ dup2(p_c[1], 1); /* presmerovani stdout k potomkovi */ dup2(c_p[0], 0); /* presmerovani stdin od potomka */ read(0, buffer, MAX_BUF); /* ceka na informace od potomka */ } return(1); }Pokud pustim program tak mi vypise celkem ctyri radky a ve ctvrte se pta na LOGIN. Pokud ale pustim binarku tohoto kodu, tak mi to dokaze precist akorat prvni tri. Pokud nepresmeruji stderr, tak dokonce jen prvni dve. Prosim poradte jak cist a zapisovat tedy do toho 'terminalu' nebo kam. Dk
<pre>
. S problémem samotným ti bohužel neporadím.
linux@linux.cz
. Přátelé, chápu, že neví-li si někdo rady, chytá se každého stébla. Ale vážně by nešlo pár dnů počkat, jestli vám v jedné diskusi někdo neodpoví, než to dáte do další? Uvědomte si, že značná část přispěvatelů je u všech diskusí stejná a tímto přístupem si rozhodně jejich sympatie nezískáte.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.