Ve věku 91 let zemřel izraelský informatik Ja'akov Ziv, spolutvůrce bezztrátových kompresních algoritmů LZ77, LZ78 a LZW (Lempel–Ziv–Welch).
Byla představena nová Arduino deska Arduino UNO R4 s 32bitovým MCU RA4M1 (Arm Cortex-M4). Desku lze zatím získat pouze v rámci early access programu.
Operační systém MidnightBSD, fork FreeBSD optimalizovaný pro desktop s prostředím Xfce, byl vydán ve verzi 3.0. Přehled novinek v poznámkách k vydání.
Na GOG.com běží Spring Sale. Při té příležitosti lze získat zdarma počítačovou hru Neurodeck: Psychological Deckbuilder (ProtonDB).
Alex Ellis upozornil 15. března, že firma Docker se chystala zrušit bezplatný hosting open-source projektů na Docker Hubu. Po vlně odporu se představitelé firmy omluvili a posléze byl původní záměr odvolán.
Ve věku 94 let zemřel Gordon Moore, mj. spoluzakladatel společnosti Intel a autor Moorova zákona.
Mercurial (Wikipedie), software pro SCM (Source Code Management), byl vydán ve verzi 6.4. Přehled novinek v poznámkách k vydání. Ve dnech 5. až 7. dubna proběhne konference Mercurial Paris.
Byly rozdány Ceny Velkého bratra (Big Brother Awards) za rok 2022 pro největší slídily pořádané nevládní organizací Iuridicum Remedium. Dlouhodobý slídil: Microsoft. Firemní slídil: Seznam. Úřední slídil: Nejvyšší správní soud. Výrok Velkého bratra: Marian Jurečka. Pozitivní cena: NoLog.
Byla představena online vzdělávací platforma Ada Computer Science pro učitele, studenty a kohokoli, kdo se zajímá o informatiku. Stojí za ní Raspberry Pi Foundation a Univerzita v Cambridgi.
GitHub má nový RSA SSH klíč. Předchozí soukromý klíč byl krátce vystaven na GitHubu.
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
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; }
#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; } } }
. . . 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; . . .
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; }
moje_skvela_utilita </dev/bagr/jahoda/konzole >/dev/bagr/jahoda/konzole
Tiskni
Sdílej: