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í
×

včera 17:11 | Komunita

Byly zveřejněny videozáznamy přednášek z Fedora 26 Release Party konané 10. srpna v Praze.

Ladislav Hagara | Komentářů: 0
včera 15:33 | Komunita

Přesně před čtyřiadvaceti lety, 16. srpna 1993, oznámil Ian Murdock vydání "Debian Linux Release".

Ladislav Hagara | Komentářů: 3
včera 06:00 | Bezpečnostní upozornění

Ve virtualizačním softwaru Xen bylo nalezeno a opraveno 5 bezpečnostních chyb XSA-226 až XSA-230. Nejzávažnější z nich XSA-227 (CVE-2017-12137) umožňuje eskalaci privilegií a ovládnutí celého systému, tj. správce hostovaného systému se může stát správcem hostitelského systému.

Ladislav Hagara | Komentářů: 1
15.8. 22:00 | Zajímavý projekt

V roce 2013 proběhla na Kickstarteru úspěšná kampaň na podporu otevřeného Dobře temperovaného klavíru (Well-Tempered Clavier). Stejný tým s Kimiko Išizaka spustil před týdnem na Kickstarteru kampaň Libre Art of the Fugue na podporu svobodného Umění fugy.

Ladislav Hagara | Komentářů: 2
15.8. 13:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 143. brněnský sraz, který proběhne v pátek 18. srpna od 18:00 hodin ve sportovním areálu a restauraci BeachPub Sokolák u Brněnské přehrady aneb v hantecu u Prýglu.

Ladislav Hagara | Komentářů: 0
15.8. 10:55 | Nová verze

Byla vydána (pdf) verze 3 průběžně aktualizované (rolling release) linuxové distribuce Solus (Wikipedie). Ke stažení je v edicích Budgie, GNOME a MATE. Z novinek lze zmínit například podporu snapů. Solus 3 obsahuje Firefox 55.0.1, LibreOffice 5.4.0.3, Rhythmbox 3.4.1 nebo Thunderbird 52.2.1. Edice Budgie a GNOME přichází s GNOME MPV 0.12. Edice MATE s VLC 2.2.6.

Ladislav Hagara | Komentářů: 5
14.8. 21:44 | Nová verze

Po více než roce vývoje od vydání verze 1.0 Microsoft oznámil vydání verze 2.0 platformy .NET Core (GitHub). Přehled novinek v poznámkách k vydání a ve videu na Channel 9.

Ladislav Hagara | Komentářů: 0
14.8. 21:11 | Pozvánky

Před dvaceti lety, 15. srpna 1997, poslal Miguel de Icaza do diskusního listu GTK+ email, který je považován za zahájení projektu GNOME. Linux Desktop Meetup pořádá oslavu ve středu 16. srpna od 19:00 v brněnském Charlie's square.

Ladislav Hagara | Komentářů: 18
14.8. 11:55 | IT novinky
Na šampionátu The International 2017 byl představen bot, který poráží profesionální hráče počítačové hry Dota 2. Bot zatím umí jenom zápasy 1v1. Vývojáři pracují na podpoře 5v5. Jedná se o společný projekt organizace OpenAI a společnosti Valve. Více na stránkách OpenAI a na YouTube. Dle Elona Muska je elektronický sport mnohem komplexnější než šachy nebo go [Hacker News].
Ladislav Hagara | Komentářů: 14
14.8. 05:55 | Nová verze

Byla vydána verze 20.0 a krátce na to opravná verze 20.0.1 svobodného softwaru OBS Studio (Open Broadcaster Software, Wikipedie) určeného pro streamování a nahrávání obrazovky počítače. Přehled novinek i s náhledy a animovanými gify v příspěvku na blogu.

Ladislav Hagara | Komentářů: 0
Těžíte nějakou kryptoměnu?
 (4%)
 (2%)
 (17%)
 (77%)
Celkem 339 hlasů
 Komentářů: 21, poslední 13.8. 09:57
    Rozcestník

    Dotaz: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisovaly

    21.4.2005 17:00 VytliNoha | skóre: 1
    Jak na dva terminaly, aby si navzajem posilaly data a i je vypisovaly
    Přečteno: 228×

    Zdravim mohl byste mi nekdo poradit jak se da resit programek v cecku abych si pri spusteni navolil v prikazove radce jaky pseudo terminal se bude pouzivat ( ptsX ). Program se pak propoji na dalsi pseudo terminal a navzajem si posilaji data.

    Presne zadani zde:

    ........................................

    Napište program, teletype. Tento program otevře sériový port a vyšle na něj každý z klávesnice zapsaný znak a vypíše každý jednotlivý znak ze sériové linky přijatý. Pomocí sériového kabelu propojte COM1 a COM2 a spusťte 2 instance programu teletype. Který COM se bude používat specifikujte z příkazové řádky při spouštění programu.

    ________________

    Vim jak udelat abych se propojil na terminal a cetl z nej znaky ale nevim jak udelat aby jsme mohl navzajem mezi terminali prijimat i odesilat. Snad pomoci fce select? Prosim poradte, ( nechci to naprogramovat, jen nakopnout), zatim je to pro me spanelska vesnice. Dekuji

    Odpovědi

    wake avatar 21.4.2005 17:37 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    jeden thread v nekonecne smycce cte konsoli a posila to na pts, druhy thread v nekonecne smycce cte pts a posila to na konsoli. jeste musite vyresit interferenci konsole a vystupu (echo on/off), ale to uz necham na vas...

    btw. pozdravujte sveho ucitele programovani ;-)
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 17:49 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    A nebude to mezi sebou delat bordel? Vsak v konzoli budu psat text ktery to bude posilat na druhy terminal a pritom ta moje konzole bude i ten text vypisovat. Kurna leda to omezit ze vse pujde na stridacku, 1. posle prijme a muze odeslat druhy zatim ceka. To by slo osetrit semaforem nebo mutexem.

    Jdu spravnym smerem?
    21.4.2005 18:53 m0rph
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    he? staci normalni cekaci smycka smycka se selectem, ktera periodicky provadi (neblokujici) cteni stdinu a toho portu, pokud se na nich neco objevi, coz vam rekne ten select. jeste se musi pomoci setbuf vypnout bufferovani stdinu a stdoutu, aby se data zpracovavala a zobrazovala hned a ne az po odradkovani.

    kdo chce na takovou blbinu pouzivat thready, at se vrati do windows.
    21.4.2005 19:09 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    No pro zacatecnika velke sousto pochopit vas prispevek. Ale snad to prelouskam kazdopadne jsem rad za kazdou radu.
    wake avatar 21.4.2005 19:11 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    a proc _periodicky_ a proc _neblokujici_ ?
    Tento příspěvek má hlavičku i patičku!
    Josef Kufner avatar 21.4.2005 19:20 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Oboji je zbytecne.

    Kdysi jsem delal program, ktery propojil svuj stdin a stdout se sitovym soketem. Byl to jeden nekonecny cyklus se selectem. Vsechna cteni/zapisy byly blokujici a timeout selectu byl nekonecny. Program v klidu spinkal a kdyz prisla data, tak je sebral a prehodil kam patri. Pak jsem to pouzil na sitove hrani piskvorek ;)
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 19:23 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Nemohl bys mi konkretneji poradit jak na to, moc by mi to pomohlo.
    Josef Kufner avatar 21.4.2005 20:29 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Je to prakticky ucebnicove pouziti selectu. Dva vstupy - stdin a ten od druheho terminalu (treba socket) predane selectu a jinak nic.
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 21.4.2005 20:31 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    kdybys to chtel videt nekde pouzite, tak koukni treba na wmpiki
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 20:48 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Mohl bys ten tvuj ucebnicovy priklad napsat? Moc by mi pomohlo pochopit ten select. Dekuji!!
    21.4.2005 20:59 RWS
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    $ man 2 select

    dej tam navic 2 FD (stdin a ten serial) a nekonecnej cyklus a mas to
    EXAMPLE
           #include <stdio.h>
           #include <sys/time.h>
           #include <sys/types.h>
           #include <unistd.h>
    
           int
           main(void) {
               fd_set rfds;
               struct timeval tv;
               int retval;
    
               /* Watch stdin (fd 0) to see when it has input. */
               FD_ZERO(&rfds);
               FD_SET(0, &rfds);
               /* Wait up to five seconds. */
               tv.tv_sec = 5;
               tv.tv_usec = 0;
    
               retval = select(1, &rfds, NULL, NULL, &tv);
               /* Don't rely on the value of tv now! */
    
               if (retval == -1)
                perror("select()");
               else
               if (retval)
                   printf("Data is available now.\n");
                   /* FD_ISSET(0, &rfds) will be true. */
               else
                   printf("No data within five seconds.\n");
    
               return 0;
           }
    
    22.4.2005 08:09 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Tak jsem to udelal takto, pri spusteni predavam parametr nazev terminalu na ktery ma preposilat vstup z klavesnice a z toho terminalu i cist a vypisovat to na vystup, jenomze kdyz program spustim tak vypisuje data ktere pisi na termilu ktery jsem uvedl pri spusteni ale kdyz pisu v tomto terminalu tak to zase nezbrazuje v terminalu kde jsem program spustil. V zadani mame ze mame spustit dve instance, ale to nejde protoze kdyz spustim program tak ten blokuje ten terminal z k tereho vypisuje text a uz nemuzu spusti dalsi instanci programu. Soucasni muj zdrojak, prosim poradte.
    #define BUF_LEN 200
    struct termios set_attributes;
              
    int main(int argc, char *argv[]) {
    	char *ttyID;
    	char buffer[BUF_LEN];
    	int result;	
        fd_set terminal, klavesnice;
        struct timeval timeout; /* Struktura s časovým limitem */
    	size_t len;
    
    
    	ttyID = argv[1]; /* Nacteme ttyID pseudo terminalu */
    	int tty = open(ttyID, O_RDWR);
    	
    	// nastav nove parametry terminalu
        tcgetattr(tty, &set_attributes);
        set_attributes.c_lflag &= ~ICANON; // necekej na cely radek (noncanonical)
        //set_attributes.c_lflag &= ~ECHO;   // nezobrazuj ctene znaky
        set_attributes.c_cc[VMIN] = 1;                                        
        set_attributes.c_cc[VTIME] = 0;
        tcsetattr(tty, TCSAFLUSH, &set_attributes);
    	
    	while(1){
    		FD_ZERO(&terminal); /* Odstranime nahodna data z mnoziny */
    		FD_ZERO(&klavesnice); /* Odstranime nahodna data z mnoziny */
    		FD_SET(fileno(stdin), &klavesnice); /* Naplnime mnozinu stdin */
    		FD_SET(tty, &terminal); /* Naplnime mnozinu ttyckem */
    		// Nadefinovany casovy interval 4 sekundy a 5 milis..
    		timeout.tv_sec = 4;
    		timeout.tv_usec = 50000;
    		
    		// Zavolám select (V Linuxu musím mít nastavenou proměnnou FD_SETSIZE) --- tezko rict co je na tom pravdy
    		result = select(FD_SETSIZE, &klavesnice, &terminal, NULL, &timeout);
    		switch(result){
    			case -1:
    				perror("select"); /* Nastala chyba */
    				exit(1);
    			case 0:
    				printf("timeout \n"); /* Vypršel časový limit */
    				break;
    			default:
    					  /* Obsluha soketu. Zde je možné vytvořit nové vlákno nebo proces,
    						který obslouží událost na soketu. Server pak je vícevláknový.
    						*/
    					if (FD_ISSET(fileno(stdin), &klavesnice)) {
    						/* Data available on stdin */
    						char a;
    						read(fileno(stdin), &a, sizeof(a));
    						write(tty, &a, sizeof(a)); 
    					}			
    					if (FD_ISSET(tty, &terminal)) {
    						char c;
    						read(tty, &c, sizeof(c));/*:!*/
    						if(c == '\004') { // `C-d'
    							// program skonci az prijme Ctrl-D
    							break;
    						}
    						else {
    							putchar(c);
    							// vyprazdni vystupni buffer
    							// a zpusob tak zobrazeni znaku
    							// i v nekanonickem modu terminalu
    							fflush(stdout); 
    						}
    					}
    				break;
    		}
    		
    	}
    }
    
    wake avatar 23.4.2005 21:20 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    snad:
    .
    .
    .
    switch(select(1, &rfds, NULL, NULL, &tv))
    {
    case -1:
        perror("select()");
        return -1;
        /* no break */
    case 0:
        printf("No data in 5 sec.\n");
        break;
    default:
        printf("DAATAAA!!!.\n");
        /* FD_ISSET(0, &rfds) will be true. */
        break;
    }
    return 0;
    .
    .
    .
    
    ;-)
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 20:00 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Zatim k cemu jsem se dohrabal, program se spousti s parametrem z ktereho portu ma data tisknout na terminal
    
    hlavicky
    
    
    
    void *readFromTERMINAL( void *ptr )
    {
            char *terminal;
            terminal = (char *) ptr;
    		
    		int tty = open(terminal, O_RDONLY);/*:!*/
    		if(tty < 0) {
            	perror("ERROR open device /dev/ttyS1");
            	exit(EXIT_FAILURE);
        	}
    		
        	while(1) {
            	char c;
           	 	read(tty, &c, sizeof(c));
            	if(c == '\004') { // `C-d'
                	// program skonci az prijme Ctrl-D
                	close(tty);
    				break;
            	}
            	else {
                	putchar(c);
                	// vyprazdni vystupni buffer
                	// a zpusob tak zobrazeni znaku
                	// i v nekanonickem modu terminalu
                	fflush(stdout); 
            	}
        	}
        	close(tty);	
    		
    }
    
    
    int main(int argc, char *argv[])
    {
    	pthread_t thread1, thread2;
    	char *parametr;
    	parametr = argv[1];   
    	
    
        // vlakno cte z daneho portu a vypisuje na terminal
    	pthread_create( &thread1, NULL, readFromTERMINAL, parametr); 
        
        
    	pthread_join(thread1, NULL);
    	printf("\nKonec\n");
        return EXIT_SUCCESS;
    }
    
    Josef Kufner avatar 21.4.2005 20:30 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    pouzivat na tohle vlakna je zvrhlost
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 17:40 Petr Šobáň | skóre: 79 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Nějak jsem to nepochopil, ale ty com porty si normálně otevřu jako soubory akorát že mu zadám zařízení /dev/ttySx tak podobně i s těmy terminály by to mělo jít ne ? (/dev/pts/x )
    Josef Kufner avatar 21.4.2005 19:21 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    terminal uz mas otevreny pri spusteni - stdin, stdout (a stderr).
    Hello world ! Segmentation fault (core dumped)
    21.4.2005 20:02 Petr Šobáň | skóre: 79 | blog: soban | Olomouc
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    To ano ale to je ten můj aktuální ale když to chci poslat na jiný terminál ?
    Josef Kufner avatar 21.4.2005 20:21 Josef Kufner | skóre: 67
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    screen to dela tak, ze si vytvori unixovy socket a k nemu se pak pripoji dalsi screen
    Hello world ! Segmentation fault (core dumped)
    wake avatar 22.4.2005 08:27 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    presmerujes sipeckama pri volani ;)
    Tento příspěvek má hlavičku i patičku!
    22.4.2005 08:34 Pitrsonek
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    Mohl bys mi to ukazat nevim presne jak to myslis, v linuxu delam asi tak mesi a v cecku taky to jen proto ze musim .-) Jinak ten kod je napsany dobre, testoval si to? kdyztak moje ICQ: 114940710
    wake avatar 22.4.2005 10:23 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminali aby si navzajem posilali data a aji je vypiso
    moje_skvela_utilita </dev/bagr/jahoda/konzole >/dev/bagr/jahoda/konzole
    Tento příspěvek má hlavičku i patičku!
    21.4.2005 22:34 MarSarK | skóre: 23 | blog: marsark_linux | Praha
    Rozbalit Rozbalit vše Re: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisov
    Hm, koukám to je zajímavý přístup k vypracování úlohy do školy. Jsem zvědav, jak ji budete odevzdávat svému cvičícímu :-)
    Even a small adventure could be a beginning of a great journey.
    21.4.2005 23:03 VytliNoha | skóre: 1
    Rozbalit Rozbalit vše Re: Jak na dva terminaly, aby si navzajem posilaly data a i je vypisov
    Co se ti ( vam ) nezda na tom pristupu?

    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.