-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnit3.cpp
More file actions
67 lines (63 loc) · 2.06 KB
/
nit3.cpp
File metadata and controls
67 lines (63 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include"testprimer.h"
DWORD WINAPI nit3run(){
wait(sem23); //ceka nit2
{
char filepath1[]="1:\\fajl1.dat";
filepath1[0]=p1;
File *f1=FS::open(filepath1,'r');
wait(mutex); cout<<"Nit3: Otvoren fajl fajl1.dat"<<endl;
cout<<"Nit3: signal 2"<<endl; signal(mutex);
signal(sem32);//6.signal
char filepath2[]="1:\\fajl3.dat";
filepath2[0]=p1;
File *f2=FS::open(filepath2,'w');
wait(mutex); cout<<"Nit3: Kreiran fajl fajl3.dat"<<endl; signal(mutex);
wait(mutex); cout<<"Nit3: signal 1"<<endl; signal(mutex);
signal(sem31);//7.signal
char c;
while(!f1->eof()){
f1->read(1,&c);
f2->write(1,&c);
}
delete f1;
wait(mutex); cout<<"Nit3: Zatvoren fajl fajl1.dat"<<endl; signal(mutex);
delete f2;
wait(mutex); cout<<"Nit3: Zatvoren fajl fajl3.dat"<<endl; signal(mutex);
}
wait(mutex); cout<<"Nit3: wait 1"<<endl; signal(mutex);
wait(sem13);//ceka nit 1
//4.blok
{
char filepath[]="2:\\fajl2.dat";
filepath[0]=p2;
File *f=FS::open(filepath,'r');
wait(mutex); cout<<"Nit3: Otvoren fajl fajl2.dat"<<endl; signal(mutex);
delete f;
wait(mutex); cout<<"Nit3: Zatvoren fajl fajl2.dat"<<endl; signal(mutex);
}
wait(mutex); cout<<"Nit3: wait 1"<<endl; signal(mutex);
wait(sem13);
wait(mutex); cout<<"Nit3: wait 2"<<endl; signal(mutex);
wait(sem23);
//5.blok
{
char filepath[]="2:\\fajl2.dat";
filepath[0]=p2;
File *f=FS::open(filepath,'r');
wait(mutex); cout<<"Nit3: Otvoren fajl fajl2.dat"<<endl; signal(mutex);
ofstream fout("izlaz1.dat", ios::out|ios::binary);
char *buff=new char[f->getFileSize()];
f->read(f->getFileSize(),buff);
fout.write(buff,f->getFileSize());
wait(mutex); cout<<"Nit3: Upisan 'fajl2.dat' u fajl os domacina 'izlaz1.dat'"<<endl; signal(mutex);
delete [] buff;
fout.close();
delete f;
wait(mutex); cout<<"Nit3: Zatvoren fajl fajl2.dat"<<endl; signal(mutex);
FS::unmount(p2);
wait(mutex); cout<<"Nit3: Demontirana particija p2"<<endl; signal(mutex);
}
wait(mutex); cout<<"Nit3: Zavrsena!"<<endl; signal(mutex);
signal(semMain);
return 0;
}