Linux - popen

Jindrich Fucik fulda na seznam.cz
Pátek Srpen 14 11:47:46 CEST 2020


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


Další informace o konferenci Hw-list