• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

Operacne systemy - domace ulohy

Started by Ageiris, 23.02.2013, 20:09:50

« predchdzajce - alie »

Ageiris

Zdravim, chcel by som sa opytat, ako riesit tuto ulohu:
QuoteVytvorte program, ktorý bude kopírovať obsah súboru zo štandardného vstupu na
štandardný výstup až po koniec vstupného súboru. Kopírujte po jednom znaku
/bajte
.
Vyskúšajte funkčnosť programu na kopírovaní súborov pomocou presmerovania
štandardného vstupu a
výstupu
.

Nechapem vobec co vlastne chcu odomna. Cital som aj archiv z roku 2012 ale nic konkretne som nenasiel, iba nejake domnienky ze asi ako by to malo byt. Vedel by niekto pomoct?
Najprv som si myslel ze to ma byt nieco take, ze napisem program, v ktorom prekopirujem obsah jedneho suboru do druheho. Potom obsah druheho suboru vypisem na standardny vystup. Vyskusat funkcnost programu som pochopil tak, ze urobim kopiu suboru spustenim nakodeneho programu, vypisem na vystup, a potom pouzijem cp v terminali a vypisem obsah novej kopie suboru. Ak sa budu vypisy rovnat, program funguje spravne. Ale podla mna to ma byt asi inak.
Ak by niekto vedel poradit, budem velmi vdacny. Dakujem

Dickenz

No ja ulohu cislo 1 vynechavam netusim ani v com sa to piše ...nemam šajnu o tom absolutne ...cele zle to je ...a este ked vidim ze kolko toho treba ta mam dost...

xxx3

vsak to spravte podla seba ako si myslite, ajtak je mala sanca, ze vam to bude niekto kontrolovat. A tieto prve ulohy su dost lahke, ked uz toto neviete spravit tak co budete robit dalej ? Stale budu kompikovanejsie ulohy a vzdy je tych uloh takto viac, nikdy nie je len jedna alebo dve.

veteran

Nechápem, čo také zložité je na prvej úlohe. Však je to mikroprogram - u mňa na 20 riadkov a z toho sú na šiestich deklarácie hlavičkových súborov a päť riadkov je prázdnych kvôli prehľadnosti...

V programe sa treba pokúsiť otvoriť nejaký neexistujúci súbor s príznakom O_CREAT
subor=open("NeexistujuciSubor.txt", O_CREAT);

... a nechať si vypísať errno a perror

Potom treba skúsiť otvoriť nejaký súbor, ktorý v skutočnosti existuje a to isté potom zopakovať bez príznaku O_CREAT.

Výstupy zo všetkých štyroch možností treba skopírovať, pastnúť do txtčka a finito.

Ageiris

ulohu 6 uz som poriesil :) nakoniec som pochopil co vlastne chcu odomna.

Teraz ma zaujima uloha 5. Prostrednictvom lseek som sa nastavil na koniec suboru, a dal som precitat 3 bajty.
Navratova hodnota read podla vypisu je 0. Teda dosiel na koniec suboru. Neviem teda, ak je kurzor na konci a dam read, ma to citat dalej prazdne znaky, alebo to ma ist od zaciatku alebo to vrati nulu ze je na konci?

nimrod

nestreti ste sa s problemom, ze ked ste nieco zapisali do suboru cez write(), tak vam program zbehol bez problemov, ale po otvoreni subor bol prazdny + permission denied.
zdrojak:

#include <fcntl.h>
#include <sys/stat.h>
int main(int argc, char **argv)
{
int des1;
int des2;
des1=open("subor1" , O_CREAT | O_WRONLY , S_IRUSR | S_IWUSR);
//vytvorime / otvorime subor
des2=dup(des1);
//zduplikujeme deskriptor
write(des1,"Toto bude v subore\n",19);
//zapiseme do neho
write(des2,"Toto tam bude tiez\n",19);
//a este raz
close(des1);
//zatvorime prvy deskriptor
close(des2);
//a aj druhy deskriptor
return 0;
}