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 18:55 | Komunita

NHSbuntu (Joinup, prezentace) měla být z Ubuntu vycházející linuxová distribuce přizpůsobená pro potřeby britské Národní zdravotní služby (NHS). NHS se název nelíbil, nejednalo se o oficiální projekt NHS, a proto bylo NHSbuntu v září loňského roku přejmenováno na NHoS. Vývojáři NHoS tento týden oznámili, že NHS se nelíbí ani název NHoS a už nemají sílu na další přejmenování a pokračování v projektu. Dodávají, že několik jednání s vedením

… více »
Ladislav Hagara | Komentářů: 2
včera 18:44 | Pozvánky

Koncem ledna, 29. 1. 2018 od 17 do 20 hodin se v Akademii CZ.NIC uskuteční večer s Turrisem.

Co bude na programu?… více »
Miška | Komentářů: 1
včera 18:33 | Pozvánky

Na tri dni sa hlavné mesto Slovenska po tretíkrát zmení na miesto s najväčšou koncentráciou profesionálnych programátorov, systémových administrátorov, učiteľov informatiky aj technologických nadšencov. Hlavným lákadlom bude konferencia PyCon SK 2018, určená záujemcom o Python, jeden z najpopulárnejších programovacích jazykov na svete.

… více »
RicCo386 | Komentářů: 0
včera 18:22 | Pozvánky

Letošní ročník konference Prague PostgreSQL Developer Day se koná ve dnech 14. 2. a 15. 2. 2018. Zveřejněn byl program s přednáškami a školeními. Otevřena byla také registrace na konferenci.

TomasVondra | Komentářů: 0
včera 11:33 | Komunita

Společnost Canonical stojící za linuxovou distribucí Ubuntu oznámila dostupnost nástroje pro týmovou spolupráci Slack (Wikipedie) ve formátu snap. Instalovat jej lze ze Snapcraftu. Slack pro Linux je dostupný také ve formátu klasických balíčků pro Ubuntu a Fedoru.

Ladislav Hagara | Komentářů: 9
18.1. 17:33 | Nová verze

Po roce vývoje od vydání verze 2.0 a 6 000 změnách byla vydána nová stabilní verze 3.0 softwaru, který vytváří aplikační rozhraní umožňující chod aplikací pro Microsoft Windows také pod GNU/Linuxem, Wine (Wikipedie). Z novinek lze zdůraznit například podporu Direct3D 10 a 11. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 14
18.1. 13:44 | Zajímavý projekt

V říjnu loňského roku úspěšně skončila kampaň na podporu chytrého telefonu Librem 5, jenž by měl respektovat bezpečnost, svobodu a soukromí uživatelů. Společnost Purism informuje o aktuálním vývoji tohoto telefonu. Místo plánovaného SoC i.MX6 by měl být použit úspornější i.MX8.

Ladislav Hagara | Komentářů: 3
18.1. 12:33 | Zajímavý projekt

V květnu loňského roku měl na YouTube premiéru krátký animovaný film Agent 327: Operation Barbershop. Blender Animation Studio včera zveřejnilo alternativní konec tohoto filmu.

Ladislav Hagara | Komentářů: 0
18.1. 05:55 | Bezpečnostní upozornění

Společnost Oracle vydala čtvrtletní bezpečnostní aktualizaci svých softwarových produktů (CPU, Critical Patch Update). Opraveno bylo celkově 237 bezpečnostních chyb. V Oracle Java SE je například opraveno 21 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 18 z nich. V Oracle MySQL je opraveno 25 bezpečnostních chyb. Vzdáleně zneužitelných bez autentizace je 6 z nich.

Ladislav Hagara | Komentářů: 0
17.1. 20:55 | Komunita

Linux ve VirtualBoxu nebude potřebovat Přídavky pro hosta (Guest Additions). Budou součástí linuxového jádra. Ovladač vboxguest by se měl dostat do Linuxu 4.16. Ovladač vboxsf by měl následovat.

Ladislav Hagara | Komentářů: 26
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (7%)
 (1%)
 (1%)
 (1%)
 (76%)
 (13%)
Celkem 1339 hlasů
 Komentářů: 53, poslední 17.1. 16:55
    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: 229×

    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.