Files & Directories-II
Transcript of Files & Directories-II
-
8/9/2019 Files & Directories-II
1/24
Files & Directories
stat , fstat & lstat functions
> Return information about a le.Syntax :
#include
#include
Int stat(const char*pathname,struct stat *buf);
Int fstat(int ledes,struct stat *buf);
Int lstat(const char
*pathname,struct stat * buf);
-
8/9/2019 Files & Directories-II
2/24
stat > returns a structure of information
fstat > obtains information about te le
%stat > returns information about te symbolic lin!
Second ar is a pointer to a structure tat 'e mustsupply
Structre denition can di(er
struct stat )
mode*t st*mode+ino*t st*ino+
de,*t st*de,+
de,*t st*rde,+
nlin! st*nlin! +
uid*t st*uid+
id*t st*id+
o(*t st*si-e+
time*t st*atime+
-
8/9/2019 Files & Directories-II
3/24
time*t st*mtime+
time*t st*ctime+
lon st*bl!si-e+lon st*bloc!s+
-
8/9/2019 Files & Directories-II
4/24
access Function
0is function is used to test on real user 1D and realroup 1D
* Synta!#include
1nt access2const car patname" int mode3+
*"eturns!
4 if 56 " $ on error 0e mode is te bit'ise 5R of any of te constants.
#ode $escription
R*56 0est for read permission
7*56 0est for 'rite permission8*56 0est for execute permission
F*56 0est for existence of le
-
8/9/2019 Files & Directories-II
5/24
umas% Function
0is function sets te le mode creation mas! for teprocess
9o error ms* Synta!
#include
#include
mode*t umas!2mode*t cmas!3+*"eturns!
pre,ious le mode creation mas!
-
8/9/2019 Files & Directories-II
6/24
chmod and fchmod Functions
sed to cane te le access permissions for an existin le.
* Synta !
#include
#include
1nt cmod 2const car patname"mode*t mode3+
1nt fcmod 2int ledes" mode*t mode3+
* "eturn !
4 if o! " $ on error ;cmod function operates on specied le
;fcmod function operates on already opened le
= conditions to cane te permission bits of a le:
> 0e e(ecti,euser1D of a process o'ner of te le> 0e process must a,e super user permission
?dditional modes are :
> S*1S@AB1D 2?dded set1D constants3
> S*1S08 20e sa,ed 0ext constant3
> S*1R78 20e C combined constants3
-
8/9/2019 Files & Directories-II
7/24
he mode constants for chmod function
#ode $escription
S*1S1D setuser1D on execution
S*1SA1D setroup1D on execution
S*1S08 sa,ed0ext 2Stic!y Eit3
S*1R78 read"'rite"execute by user 2o'ner3
S*1RSR read by user 25'ner3
S*17SR 'rite by user 25'ner3S*18SR xecute by user 25'ner3
S*1R78A Read"'rite" execute by roup
S*1RARG read by roup
S*17ARG 'rite by roup
S*18ARG xecute by roup
S*1R785 Read"'rite" execute by oter 2'orld3
S*1R50H read by oter 2'orld3
S*1750H 'rite by oter 2'orld3
S*1850H xecute by oter 2'orld3
-
8/9/2019 Files & Directories-II
8/24
0e ;cmod function automatically clear = of te permission bitsunder te follo'in conditions:
$. 5nly super user can set te stic!y bit oter'ise stic!y bit turned o(
=. Aroup1D of a le is not eIual to (ecti,eAroup1D of process " ten
setroup1D bit turned o(.. Stic%y 'it
1f it 'as set for an executable proram le " tat le stored in s'aparea.
Jainly used for reduce te time for load le in memory
Eot SRK and K.CLESD allo's te stic!y bit to be set for a directory if te bit is set for a directory " a le in te directory can be remo,edor renamed only if te user as 'rite permission for te directory " andeiter
> 5'ns te le
> 5'ns te directory or
> is te superuser
. chon , fchmod and lchon functions
*;co'n function allo's us to cane te user1D of a le and te
roup*1D of a le.
-
8/9/2019 Files & Directories-II
9/24
*Synta!
#include
#include
int co'n2const car patname"uid*t o'ner" id*t roup3+
int fco'n2int ledes" uid*t o'ner" id*t roup3+int lco'n2const car patname" uid*t o'ner"id*t roup3+
*"eturn!
4 if o! " $ on error
lchon canes te o'ner of te symbolic lin!. 'er%eley based systems super user only can cane teo'nersip of a le
System allo'ed any user can cane te o'nersip of anyles
In +SI-./> 5nly a super user process can cane te user 1D of te le
> ? non super user can cane te roup 1D of te le if
te process o'ns te le
o'ner eIuals te user 1D of te le & roup 1D
-
8/9/2019 Files & Directories-II
10/24
File Si0e
1n stat structure " te eld st*si-e contains si-e of te le in bytes.
0is eld is meanin ful only for
> reular les
> directories> symbolic lin!s
S"1denes te le si-e for a pipe
"e2ular File a le si-e of 4 is allo'ed
$irectory 3 te le si-e is usually a multiple of a number suc as
$M or N$=* Symbolic 4in% 3 te le si-e is actual number of bytes in te
lename
5! usr6lib 3 le si0e is 7
* S"1 and 1.89'S$
st*bl!si-e
st*bloc!s
* :oles in a File
> Reular le can contain ole
> Holes are created by see!in past te current endofle & 'ritinsome data
-
8/9/2019 Files & Directories-II
11/24
File runcation
mptin a le by usin ;5*0R9O Pa in open function ?dditional functions to truncate te data are
Synta!
#include
#include
int truncate2const car patname" o(*t lent3+
int ftruncate2int ledes"o(*t lent3+
*"eturn!4 if 56 " $ on error
0e = functions truncate an existin le to ;lent bytes.
0ese = functions are pro,ided by
> SRK
> K.CLESD
-
8/9/2019 Files & Directories-II
12/24
File Systems
Gartition Gartition Gartition
ilistDirectory bloc!s and
data bloc!s
inode inode QQ.. inode
-
8/9/2019 Files & Directories-II
13/24
ilistDatabloc!
Directory bloc!
Databloc!
Directory bloc!
inode inodei
node
i
node
i
nodeno.
File
9ame
i
nodeno.
File
9ame
-
8/9/2019 Files & Directories-II
14/24
arious le implementation types
1n SRK supports = di(erent types of dis! le systems
> 0e traditional 918 system le system 2SN3
> 0e unied File System 2FS3 FS Eased on te Eer!ley fast le system
SRK supports additional nondis! lesystems
> = distributed le systems
> ? bootstrap le system ? dis! dri,e di,ided into $ or more partitions
ac partition contains a le system
inode contains information about te le
1n te stat structure " te lin! count is contained in test*lin! member. 1ts primiti,e system data type in nlin!*t .0ese types of lin!s are calledhard lin%.
Symbolic 4in% 0e actual content of te le
contains te name of te le tat te symbolic lin! pointto it.
-
8/9/2019 Files & Directories-II
15/24
1f te le type in i*node S*1F%96 " tat le issymbolic lin! le
i*node contains
> File type> File ?ccess Germission bits
>File Si-e
> Gointer to te data bloc!s for te le
stat structure information obtain from i*node Directory contains
> File 9ame
>i*node number
9o directory entry point to an i*node in a di(erentle systems
-
8/9/2019 Files & Directories-II
16/24
lin% , unlin%, remoe, & rename Functions
?ny le can a,e multiple directory entries pointin to itsi*node
lin% Function
> sed to create a lin! to an existin le
3
-
8/9/2019 Files & Directories-II
17/24
unlin% Function
> Remo,e an existin directory entry
3 0is function remo,es te directory entry & decrementste lin! count of te referenced by ;patname
> 1f oter lin! points to te le and data of te le is stillaccessible " ten le is not caned & error occurs
> 0o unlin! a le " 'e must a,e
> 7rite permission
> xecute permission> 1f stic!y bit is set to te directory " 'e must a,e
> 7rite permission and eiter of follo'in
> 5'n te le > 5'n te directory > Super userpermission
> lin! count 4 ten te content of te le 'ill be deleted
* F ti
-
8/9/2019 Files & Directories-II
18/24
* remoe Function
> unilin! a le or directory 'it tis function
3 For a le ;remo,e ; unlin!
>For a directory ;remo,e ;rmdir> In =>SI ? 3 0is function used for delete a le
* rename Function
> sed to rename a directory or le
3< Synta !#include
int rename2const car oldname" const car ne'name3+
3< "eturns !
o if o!" $ on errror
S b li 4i %
-
8/9/2019 Files & Directories-II
19/24
Symbolic 4in%s
1s an indirect pointer to a le
%imitations of Hard lin!:
> Hard reIuired " lin! & le reside in te same lesystem
>5nly super user can create a ard lin! to adirectory
9o limitations for symbolic lin! 0is is used for
> Jo,e a le
> Jo,e an entire directory ierarcy
1ntroduced 'it K.CLESD 7it SRK " symbolic lin!s are supported for
> 0e 0raditional System FileSystem 2SN3
> nied FileSystem 2FS3
li % & dli % F ti
-
8/9/2019 Files & Directories-II
20/24
symlin% & readlin% Functions
symlin% Function
> Oreate a Symbolic lin!
3
-
8/9/2019 Files & Directories-II
21/24
File imes
C time elds are maintained for eac le
Field $escription 5ample ls(/) option
st*atime lastaccess time of le data read u
st*mtime last*modication time of ledata 'rite default
st*ctime lastcane time of i*node status cmod " co'n c
Jany operations a(ect i*node 'itour canin te actual contents of te le :
> canin te le access permissions
> Oanin te user 1D
> Oanin te number of lin!s 0e system does not maintain te lastaccess time for an i*node
0e ;ls command displays or sorts only one of te C time ,alues.
ls l or lst options uses te modication time of a le
u option causes it to use te access time
c option causes it to use te canestatus time
utime Function
-
8/9/2019 Files & Directories-II
22/24
utime Function
sed to cane access time & modication time of a le
*Synta !
#include
#includeint utime2const car patname" const struct utimebuf times3+
* "eturns!
4 if 56 " $ on errror
0e Structure used by tis function is
struct utimebuf
@
timeAt actime;
timeAt modtime;
B
0ese = time ,alues in te structure are calendar times " 'iccount seconds .
1f time is a null pointer " access time & modication time currenttime
1f time is a null pointer " access time & modication time structure pointed ,alue
%di & di F ti
-
8/9/2019 Files & Directories-II
23/24
m%dir & rmdir Functions m%dir Function
>Oreate an empty directory
3< Synta!
#include#include
1nt m!dir2const car patname"mode*t mode3+
3 0e automatic entires are
dot 2.3 dotdot 2..3
rmdir Function
>Delete an empty directory
3< Synta!
#include
int rmdir2cosnt car patname3+
3< "eturns!
4 if 56 " $ on error
"eadin2 $irectories
-
8/9/2019 Files & Directories-II
24/24
"eadin2 $irectories