Portál AbcLinuxu, 10. května 2025 03:06
Řešení dotazu:
aaa | bbb
", tak příkaz aaa
dostane svislou čáru jako parametr. Tu ale ve skutečnosti interpretuje už shell a program má rovnou rouru otevřenou pro zápis jako deskriptor 1, tj. standardní výstup. Druhý program má pak tutéž rouru otevřenou pro čtení coby deskriptor 0, tj. standardní vstup. Programy samotné pak skutečnost, že jsou spuštěny přes rouru, vůbec nezajímá a chovají se stejně, jako kdybyste je spustil samostatně (až na výjimky, např. některé programy mají mírně odlišný výstup podle toho, jestli je výstupem terminál nebo ne).
char* argument; if (isatty(STDIN_FILENO)) { argument = argv[1]; } else { argument = // read_from_stdin }
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.