Byla vydána dubnová aktualizace aneb nová verze 1.89 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Vypíchnout lze, že v terminálu lze nově povolit vkládání kopírovaného textu stisknutím středního tlačítka myši. Ve verzi 1.89 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Proton, tj. fork Wine integrovaný v Steam Play a umožňující v Linuxu přímo ze Steamu hrát hry určené pouze pro Windows, byl vydán ve verzi 9.0-1 (𝕏). Přehled novinek se seznamem nově podporovaných her na GitHubu. Aktuální přehled her pro Windows běžících díky Protonu také na Linuxu na stránkách ProtonDB.
Byla vydána verze 1.78.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání na GitHubu. Vyzkoušet Rust lze například na stránce Rust by Example.
Služba Dropbox Sign (původně HelloSign) pro elektronické podepisování smluv byla hacknuta.
Byla vydána nová major verze 8.0 textového editoru GNU nano (Wikipedie). Podrobný přehled novinek a oprav v oznámení v diskusním listu info-nano nebo v souboru ChangeLog na Savannah. Volbou --modernbindings (-/) lze povolit "moderní" klávesové zkratky: ^C kopírování, ^V vložení, ^Z vrácení zpět, … Tato volba je aktivována také pokud binárka s nano nebo link na ni začíná písmenem "e".
Před 60 lety, 1. května 1964, byl představen programovací jazyk BASIC (Beginners' All-purpose Symbolic Instruction Code).
Byla vydána nová verze 12.0 minimalistické linuxové distribuce (JeOS, Just enough Operating System) pro Kodi (dříve XBMC) a multimediálního centra LibreELEC (Libre Embedded Linux Entertainment Center). Jedná se o fork linuxové distribuce OpenELEC (Open Embedded Linux Entertainment Center). LibreELEC 12.0 přichází s Kodi 21.0 "Omega".
Microsoft vydal novou velkou aktualizaci 2404.23 v září 2019 pod licencí SIL Open Font License (OFL) zveřejněné rodiny písma Cascadia Code pro zobrazování textu v emulátorech terminálu a vývojových prostředích.
OpenTofu, tj. svobodný a otevřený fork Terraformu vzniknuvší jako reakce na přelicencování Terraformu z MPL na BSL (Business Source License) společností HashiCorp, bylo vydáno ve verzi 1.7.0. Přehled novinek v aktualizované dokumentaci. Vypíchnout lze State encryption.
Spouštět webový prohlížeč jenom kvůli nákupu kávy? Nestačí ssh? Stačí: ssh terminal.shop (𝕏).
int main(int argc, char** argv) { // spracovanie argv }program spustam:
#./program argv1 argv2vsetko funguje ako ma
# echo "argv1 argv2" | ./programkde sa snazim logiku toho spravit ako:
int main(int argc, char** argv) { if (argc < 2) { char buf[1025]; if (!feof(stdin)) { fgets(buff, 1024, stdin); // spracovanie buffera } else { /// print usage && exit } } ...tak nastane problem, pretoze ak nezadam ziaden parameter (teda pustim program ako
./program
) - tak caka na vstup z klavesnice .. moj ciel je, aby ked sa na stdin nic nenachadza (teda ze som ho nespustil pomocou 'echo'), tak program skonci ..
pls, vedel by ma niekto usmernit ? vdaka
Řešení dotazu:
moj ciel je, aby ked sa na stdin nic nenachadza (teda ze som ho nespustil pomocou 'echo'), tak program skonci ..Že to čeká na vstup, to je správné chování. Možností je leda na klávesnici stisknout ^D nebo použít </dev/null
Problém je v představě, že když progam spustíte "jen tak", tak se na vstupu nic nenachází. Ve skutečnosti program dostane na standardní vstup to, co mu napíšete na terminál; a vy mu to tam můžete napsat třeba po půl hodině, proto čeká. Pokud ho chcete spustit opravdu s prázdným vstupem, musel byste použít např.
echo -n | ./program ./program </dev/null
nebo něco podobného. Tomu, co si představujete, by se částečně blížilo, pokud by se program na začátku podíval, jestli je standardní vstup terminálem (pomocí isatty()
), a pokud ano, nečetl by ho. Ale nemyslím si, že tohle je správný způsob, jak psát programy.
read
bude cakat, kym sa tam skutocne nieco neobjavi ..
druhy variant je, ze program bude citat data bud zo stdin alebo file-u, ak ho specifukujem .. vtedy dosiahnem asi najlepsie to, co potrebujem, teda bud:
# echo "data" | ./programalebo
#./program -f data.datchcel som sa vsak spytat ci predsalen neexistuje (cisty/prenositelny) sposob, ako som povodne zmyslal .. zda sa, ze tato druha varianta je asi typickejsia ..
echo arg arg | xargs programpokud to tedy není nějaká domácí úloha...
program
robi to, ze na vstupe nacita hexa cisla a prehodi ich na desiatkove .. v praxi cita data zo suboru, pre urcite pripady chcem rucne zadavat slova ja (moja spatna kontrola) .. preto som si urobil moznost rucne zadat cisla cez
#./program a1 7f ..no a zamyslel som sa, ze co keby som to chcel robit sposobom
# echo "asd" | ./programa zistil som, ze to neviem vyriesit/dogooglit sa .. preto som sa pytal - v tom spociva moj root cause otazky .. a na to si mi v celku odpovedal - pouzi xargs ..
Upravit ano, ale pomlčková konvence standardně funguje tak, že je ekvivalentní
cmd file cmd - <file
zatímco v tomto případě by mělo být ekvivalentní
cmd xyz echo xyz | cmd -
což by IMHO bylo dost matoucí pro ty, kdo jsou zvyklí na používání pomlčky v tom tradičním významu.
chcel som sa vsak spytat ci predsalen neexistuje (cisty/prenositelny) sposob, ako som povodne zmyslal .. zda sa, ze tato druha varianta je asi typickejsia ..
Ale na to už jsem vám odpověděl - pokud vám nevadí, že nebudete moci zadat parametry interaktivně z terminálu, můžete použít isatty()
pro rozlišení, jestli je standardní vstup terminálem.
int main(int argc, char** argv) { if (isatty(1)) printf ("is terminal.\n"); else printf ("not a terminal.\n"); ..mi spusteny kod:
#./program a1 is terminal. # # echo "ea" | ./program is terminal. #je mozne, ze ta nechapem presne ako to mam pouzit .. pozrem este po googli examples na isatty(), rano budem (hadam) mudrejsi ..
STDIN_FILENO
, pak se nespletete.
Tiskni Sdílej: