Linux - popen

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Srpen 14 12:15:30 CEST 2020


Jak se ta knihovna ma jmenovat? Hledal jsem *zlib* v celem systemu a 
naslo to jen neco pro python, tak tam asi instalovana nebude?
Muzu si pohrat za dlouhych zimnich veceru s cross compile knihovny, 
dalsi otazka jsou knihovny pro openssl asi stejny problem?
Aktualne teda asi udelam v /tmp soubor, pustim na to system() s necim 
jako gzip | openssl < /tmp/in > /tmp/out a prislusnymi parametry a 
prectu vytvoreny soubor.... Bude to na 10 radku a za pul hodky hotove, 
doufam, ze tento postup nema zasadni slabinu krome zateze systemu (to je 
tady celkem nepodstatne)

Dne 14.08.2020 v 11:47 Jindrich Fucik napsal(a):
> Tak ty knihovny na cílovém systému pravděpodobně budou, nebo bude možné je najít a přeložit.
>
> pokud se zavolá tar s parametrem -z, tak to znamená, že to udělá "tar - | gzip" Tedy prostě to zavolá dva programy.
> tar je "tape archiver", kterej si klade za cíl vzít nějakou souborovou strukturu (jména souborů, atributy, ...) a udělat z ní proud dat, která bude možné sériově zpracovávat. To pro blok dat v paměti není užitečné. Stačí použít ten gzip, který si klade za cíl vzít proud dat, udělat nad ním nějakou variantu LZW komprese a poslat to dál jako proud dat.
>
> ---------- Původní e-mail ----------
>
> Od: Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
>
> Komu: hw-list na list.hw.cz
>
> Datum: 14. 8. 2020 10:28:34
>
> Předmět: Re: Linux - popen
>
> S knihovnama je to slozitejsi, je to embeded system a jeste k tomu co se
> tyce systemu pro nas relativne uzavreny, kernel stary 3.18.0. Mam
> zprovozneny cross compiler na windows tak akorat pro preklad aplikace.
> Asi bych je musel nejak slozite cross-kompilovat?
> Mel jsem za to, ze tar -cz provede kompresi pomoci gzip (nebo je to
> aspon kompatibilni) a udela archiv (coz je v tomto pripade nezadouci),
> gzip samotny pak jen kompresi jednoho souboru nebo vstupniho proudu.
> Nebo je to jinak?
>
> Dne 14.08.2020 v 10:18 Jindrich Fucik napsal(a):
>> a-ha, mezi tar a gzip je troche rozdíl.
>> Záleží jaké máš představy, buď si budeš hrát s forkováním a voláním systému, nebo si natáhneš knihovny. Pro zipování je to man 3 zlib.
>> Já mám raději kompaktnější programy, takže bych sáhl po knihovnách, ale někdo má raději otevřenější a třeba si představuje nějakou možnost nagradit gzip za winzip nebo jiný LZW kompresovač který neznám a pak je volání vnějšího asi výhodné.
>>
>> ---------- Původní e-mail ----------
>>
>> Od: Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
>>
>> Komu: hw-list na list.hw.cz
>>
>> Datum: 14. 8. 2020 9:37:24
>>
>> Předmět: Re: Linux - popen
>>
>> Co se tyce tar, tak jasne, asi lepsi pouzit gzip v tomto pripade?
>> Presne takhle to chci jen se mi uplne nelibi pouziti dalsiho vlakna, coz
>> se zde myslim predpoklada. Data nejsou moc velka, typicky par kB, dalo
>> by se to krmit a odebirat po kouskach?
>> Pouziti knihovny pro openssl jsem zvazoval, ale jeste tam je to zipovani
>> coz je asi jednodussi pouzitim prikazu? A to uz se pak rovnou muze
>> zaradit i to sifrovani predpokladam. Na prikazove radce to funguje
>> presne podle mych predstav a na PC z toho umim v C# data i dostat.
>>
>> Dne 14.08.2020 v 9:27 Jindrich Fucik napsal(a):
>>> chápu to správně, že máš program, který má u sebe nějaká data, ta data chce poslat do řetězce tar - | openssl a zase si sebrat výstup a ten dál zpracovat?
>>>
>>> Něco jako tohle?
>>> program --- data ---+                  +--- data2 --->
>>>                        |                  |
>>>                         `-- tar -- ssl --'
>>>
>>> To není moc těžké, jen je potřeba vědět, že tvůj program musí být schopen odebírat data když je openssl vytváří. Takže potřebuješ dva forky. Jeden krmí tar a druhej čte openssl. Příklad jak zavřít,  respektive modifikovat stdin a stdout pro dva forky je vlastně součástí příkladu pro fork.
>>>
>>> Ale moc mi v tomhle řetězci nedává smysl použití taru, nevím, jaká je jeho přidaná hodnota? Prostě bych použil openssl library a udělal všechno v rámci jednoho programu.
>>>
>>>
>>> ---------- Původní e-mail ----------
>>>
>>> Od: Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
>>>
>>> Komu: hw-list na list.hw.cz
>>>
>>> Datum: 14. 8. 2020 9:05:34
>>>
>>> Předmět: Re: Linux - popen
>>>
>>> Zretezit tar a openssl je jasne, ale jde mi o to, ze mam nejake pole v
>>> pameti, to chci dat jako vstup a vystup by se mi libilo zase primo
>>> precist do pameti a vyhnout se docasnym souborum. Neco jako kdyz se
>>> presmeruje zaroven konzolovy vstup i vystup na soubory ale obracene.
>>> Jen mam dojem, ze to nejde nebo nejakym zpusobem ano?
>>>
>>> Dne 14.08.2020 v 8:52 Ladislav Vaiz napsal(a):
>>>> Ano, program bude číst ze stdin a zapisovat do stdout. Přesměrování je
>>>> věc volajícího. Ale myslím si, že k tomu žádný program nebude třeba,
>>>> stačí s shellu napsat něco jako tar cz | openssl
>>>> V C si můžete popen použít vícekrát.
>>>> L.
>>>>
>>>> Dne 14.08.2020 v 8:39 Jaroslav Buchta napsal(a):
>>>>> Potrebuji zazipovat skrz tar a zasifrovat skrz openssl nejaka data a
>>>>> libil by se mi system kde by byl vstup i vystup skrz pipe, jde to nejak?
>>>>>
>>>>> Zatim mam dojem, ze jde vzdy jen jeden smer, aspon u teto funkce
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list