abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 9
dnes 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 4
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 10
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 25
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 4
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 1
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 772 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama
Štítky: není přiřazen žádný štítek

Dotaz: Ako dostat vystup prikazu do programu

22.12.2008 17:45 xsustek | skóre: 6
Ako dostat vystup prikazu do programu
Přečteno: 201×

Toto je asi lahka otazka, ale nejak ma nenapada ako spratit tuto vec.

 

Z programu pisaneho v cecku, potrebujem spustit externy prikaz a dostat jeho vystup (text) spat do programu.

 

Nenapada niekoho ako by som to mohol urobit? K mojemu prekvapeniu som zistil ze funkciu system () na to pouzit nemozem, lebo ta len vracia navratovu hodnutu.

 

Dik.

Odpovědi

22.12.2008 17:51 rastos | skóre: 60 | blog: rastos
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
man pipe
22.12.2008 17:56 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

OK ale kam to mam redirectnut?

Ide o to ze program bude stusteny napr aj hodinu. A taketo prikazy bude spustat a spracovavat ich vystupy. Potrebujem nieco ako funkciu system s tym rozdielom ze mi na miesto navratovej hodnoty vrati retazec v ktorom bude vystup programu. Nenamada ma ako by sa toto dalo spravit pomocou pipe .

22.12.2008 18:02 XSimi | skóre: 10
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

program

....cout<<"neco";.....

program|cat ??

man pipe

22.12.2008 18:32 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

OK, rozumiem. Este si chcem overit ci to pojde takto :

 

//vytvorim pipe s dvoma descriptormi

FILE * pipedescr [2]; pipe (pipedescr);

//potom

sprintf(command,"command  &%d",(int)pipedescr[1]);

system(command);
 

//potom citam.

fgets ();

 

toto mi vracia

sh: Syntax error: "&" unexpected

 

ako mam predat ten desktriptor tomu spustanemu programu?

 

 

 

 

 

22.12.2008 19:16 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
ten "&" udelate pomoci funkce fork, ktera vas proces rozdvoji a v jednom podprocesu napojite trubku pres dup2 na out a pomoci execve nebo podobne (ne system!!) spustite pozadovany program. v druhem procesu pak muzete z trubky cist.

cely tenhle cirkus si ale muzete ve vetsine pripadu usetrit pokud pouzijete funkci popen.
In Ada the typical infinite loop would normally be terminated by detonation.
22.12.2008 19:33 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

Jasne, mam to.

Presne taketo nieco som hladal. Jedna fukcia a hotovo.

 

Dik

22.12.2008 18:26 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
zkracene asi takto:

int pipe(int pipefd[2]); vytvori pipefd[0] pro cteni a pipefd[1] pro zapis

pak udelas fork()

v potomkovi pomoci int dup2(int oldfd, int newfd); udelas kopii pipefd[1](oldfd) do stdout(newfd) a pres exec*() spustis program

v rodici pak ctes z pipefd[0] co potomek posila na stdout - ktery je ale "presmerovany" do pipefd[1]

konkretni reseni se da najit googlem za pouziti vyse uvedenych klicovych slov

22.12.2008 18:45 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

Diky za odpoved. Idem to vyskusat.

22.12.2008 18:49 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu

Este sa chcem opytat, ze ked potomok skonci? Zatvori sa rura sama? Resp. Ako rodic zisti, ze do rury uz nikto zapisovat nebude. Bude tam EOF alebo nieco take?

22.12.2008 19:25 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
pokud vam umre potomek, do ktereho se pokousite psat, skonci vam prislusna operace s chybou EPIPE (broken pipe). zaroven se vam do programu dostavi signal SIGPIPE. ten musite odchytit a zneutralizovat, jinak program chcipne.

pokud umre potomek ze ktereho chcete cist, dostanete obvykle na cteni EOF (a zadne dalsi nasilnosti se nekonaji).

v kazdem pripade jste o umrti potomka notifikovan pomoci SIGCHLD. pokud ho neosetrite, nic se nedeje. nicmene jeho exit status si tak ci tak musite nekdy brzy vyzvednout pomoci wait, wait4pid a podobne. nez si exit status vyzvednete, bude potomek v procesech evidovan jako zombie.

pokud pouzijete funkci popen (viz vyse), ceremonii kolem potomku provede funkce pclose. ten SIGPIPE si ale musite stejne zaridit sam.

pokud chcete potomka nasilne ukoncit, pouzijte funkci kill. pokud potomek ma tendenci vyrabet dalsi potomky, nastavte mu nejprve process group pomoci setpgid a pak pouzijte kill na celou process group (zaporny parametr).
In Ada the typical infinite loop would normally be terminated by detonation.
23.12.2008 08:33 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
PS. s tim nasilnym ukoncenim: muze se vam stat dost neprijemna vec - zejmena ve vasem pripade, kdy potrebujete cekat na to co vam program pise na vystup.

1) vas program pusti potomka a cte z nej vystup

2) potomek nic nevypisuje (napr. kvuli okolnostem) a vas program stale ceka, nebo dela neco na pozadi

3) vas program umre, protoze se mu neco spatneho stane, nebo normalne

4) potomek nic nevypisuje a zustane zit dal [potencialne dost dlouho]

5) az ve chvili kdy by potomek chtel neco napsat, tak skonci na broken pipe

proto je dobre explicitne zabit potomka, pokud koncime, a/nebo mit jistotu ze potomek napr. kazdou sekundu neco vypisuje, tudiz relativne brzy umre taky.
In Ada the typical infinite loop would normally be terminated by detonation.
22.12.2008 20:19 Semo | skóre: 44 | blog: Semo
Rozbalit Rozbalit vše Re: Ako dostat vystup prikazu do programu
man popen

Riesi fork a presmerovanie za teba. Dostanes filedescriptor z ktoreho si citas, co potrebujes.
If you hold a Unix shell up to your ear, you can you hear the C.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.