1.4. Файл process.C
#include<fcntl.h>
#include<sys/types.h>
#include<fcntl.h>
#include<stdio.h>
#include<malloc.h>
#include<process.h>
#include<iostream.h>
int stud_num; //kolichestvo studentov
int mark; //ocenka, poisk kotoroy proizvoditsya
int i; //vremennaya peremennaya
int Handle; //descriptor fayla
long FSize; //razmer fayla (bayt)
char FName[15];//imya fayla
struct stud {char stud_surname[20]; //familiya studenta
int stud_group; //gruppa
int stud_mark;};//ocenka
struct stud *Buffer;//bufer dlya hraneniya zapisey
int main()
{cout<<"\n Vvedite imya faila, v kotorom hranitsya baza dannih: ";
cin>>FName;
//Otkrutie faila bazi dannux
if((Handle=open(FName,O_RDONLY))==-1)
{cout<<"Fail ne moget but' otkrut. Programma prervana.";
exit(-1);}
//Vuchislenie razmera faila
FSize=lseek(Handle,0,SEEK_END);
lseek(Handle,0, SEEK_SET);
stud_num=FSize/sizeof(struct stud);
cout<<"\n baza dannux xranit informaciyu po studentam \n"<<stud_num;
cout<<"\n Rezervirovanie pamiyati v razmere bait\n."<<stud_num*sizeof(struct stud);
if((Buffer=(struct stud*)malloc(stud_num*sizeof(struct stud)))==NULL)
{cout<<"\nNedostatochno pamyati. Programma ostanovlena.";
exit(-1);}
//Chtenie vsego sodergimogo faila bazu dannux v pamyat'
if(FSize!=read(Handle,Buffer,FSize))
{cout<<"\n Oshibka chteniya faila. Programma ostanovlena.";
exit(-1);
close(Handle);}
close(Handle);
cout<<"\n Vuvodit studentov, ch'ya ocenka ravna:";
cin>>mark;
for(i=0;i<stud_num;i++)
if(Buffer[i].stud_mark==mark)
{cout<<"\n Imya studenta: "<<Buffer[i].stud_surname;
cout<<"\n Groppa studenta: "<<Buffer[i].stud_group;
cout<<"\n Ocenka studenta: "<<Buffer[i].stud_mark;}
cout<<"\n\n Obrabotka bazu dannux zavershena!\n";
}
Результат выполнения:
# QCC main.cpp -l/lib/libm.a -o main
# ./main
Identifikator roditelskogo processa raven
909350
Identifikator dochernego processa raven:
913447
Identifikator roditelskogo processa raven
909350
. 111 input.cpp main.cpp output.cpp process.cpp
.. input main output process
Vipolnenenie vneshney programmi posredstvom funkcii spawnl
PID tekywego processa raven: 925736
Vvedite kolichestvo stydentov:3
Rezervirivanie pamyati v razmere 84 bait
Vvedite informaciy o 1 studente iz 3
Vvedite imya stydenta:stas
Vvedite nomer gryppu stydenta:1
Vvedite ocenky stydenta:9
Vvedite informaciy o 2 studente iz 3
Vvedite imya stydenta:stas2
Vvedite nomer gryppu stydenta:2
Vvedite ocenky stydenta:9
Vvedite informaciy o 3 studente iz 3
Vvedite imya stydenta:stas3
Vvedite nomer gryppu stydenta:1
Vvedite ocenky stydenta:7
Zapolnenie bazi dannux zaversheno!
Vvedite imya faila dlya coxraneniya bazu dannux:baza
Vipolnenenie vneshney programmi posredstvom funkcii spawnl
PID tekushego processa raven:929832
Vvedite imya faila bazi dannih: baza
Baza dannih hranit zapisi o studentah3
Rezervirovanie pamyati v razmere 84 bayt...
Informaciya o 1 studente iz 3
Familiya studenta: stas
Gruppa studenta: 1
Ocenka studenta: 10
Informaciya o 2 studente iz 3
Familiya studenta: stas2
Gruppa studenta: 2
Ocenka studenta: 10
Informaciya o 3 studente iz 3
Familiya studenta: stas3
Gruppa studenta: 1
Ocenka studenta: 8
Vivod bazi dannih na ekran zavershen!
Vipolnenenie vneshney programmi posredstvom funkcii execl
Vvedite imya faila, v kotorom hranitsya baza dannih: baza
baza dannux xranit informaciyu po 3 studentam
Rezervirovanie pamiyati v razmere 84 bait
Vuvodit studentov, ch'ya ocenka ravna:10
Imya studenta:stas
Groppa studenta:1
Ocenka studenta:10
Imya studenta:stas2
Groppa studenta:2
Ocenka studenta:10
Obrabotka bazu dannux zavershena!