.


:




:

































 

 

 

 





 

- . ( ).

 

Linux :

- scandir () ,

 

int scandir (const char * dir, struct dirent *** namelist,

int (* select) (const struct dirent *),

int (* compar) (const struct dirent **, const struct dirent **));

 

alphasort () versionsort (), , , .

 

- opendir (), readdir (), closedir ().

 

# Include <sys/types.h>

# include <dirent.h>

DIR * opendir (const char * pathname);

Return: , OK, NULL

 

struct dirent * readdir (DIR * dp);

Return: , OK, NULL

 

void rewinddir (DIR * dp);

int closedir (DIR * dp);

Return: 0, OK, -1

 

dirent <dirent.h> . .

 

struct dirent

{int_td_ino; / / I-node

char d_name [NAME_MAX +1]; / / '

}

 

NAME_MAX fpathconf (). BSD- 255.

 

DIR , , . DIR, opendir (), .

 

printdir, , .

 

# Include <stdio.h>

# include <dirent.h>

 

int sel (struct dirent * d)

{return 1; / / }

 

int main (int argc, char ** argv)

{inti, n;

struct dirent ** entry;

if (argc! = 2)

{printf (":% s <> \ n", argv [0]);

return 0;}

n = scandir (argv [1], & entry, sel, alphasort);

if (n <0)

{printf (" \ n");

return 1;}

for (i = 0; i <n; i + +)

printf ("% s inode =% i \ n", entry[i]->d_name, entry [i] -> d_ino);

return 0;}

 

scandir () . -, , , , . sel (). sel () 0, . scandir - . alphasort (), .

 

dirent. , dirent , . dirent inode ( inode, , , ). dirent d_type char *, , , null.

 

scandir () . , , .

 

:

# Include <stdio.h>

# include <dirent.h>

int main (int argc, char ** argv)

{DIR * d;

struct dirent * entry;

if (argc! = 2)

{printf (":% s <> \ n ", argv [0]);

return 0;}

d = opendir (argv [1]);

if (d == NULL)

{printf (" \ n ");

return 1;}

while (entry = readdir (d))

printf ("% s inode =% i \ n", entry-> d_name, entry-> d_ino);

closedir (d);

return 0;}

opendir (), readdir () closedir (), . readdir () TRUE , .

 

3.

 

int chdir (char * pathname);

pathname - '

 

chdir , pathname; pathname .

 

chdir 0, . -1 ; errno ENOENT, , path-' . , pathname .

 

:

 

1) chdir ("/"); / * : chdir ("\")

chdir ("..") / * * /

 

2) void lookdir (char * s, int ac, char ** av)

chdir (s)

 

3)chdir ("c: / temp");

c: \ \ temp , (\ \) oo (\). - e escape-o C-o.

 

4.

, ' , . ' - , . , , link:

 

link - # include <unistd.h>

int link (const char * oldpath, const char * newpath)

 

oldpath, '

newpath '

0 , -1 ( - errno)

 

(oldpath) ' - . (newpath) ' . , UNIX . , , , . ' , , - link 쳺 .

, unlink.

.. , - (read, write).

 

5.

 

- /

uj , t - , ' . . , open , , ', . , , ( , ). , ' , . , ' .

symlink:

 

# include <unistd.h>

int symlink (const char * oldpath, const char * newpath)

 

oldpath, '

newpath '

0 , -1 ( - errno)

 

unlink.

 

readlink -

 

# include <unistd.h>

ssize_t readlink (const char * path, char * buf, size_t bufsize)

 

path - '

buf

bufsize ;

0 , -1 ( - errno)

 

readlink ' ' , 0, UNIX . , 1 , \ 0:

 

6.

 

. link unlink.

:

  1. , .
  2. ' . 򳺿 , , , , link . , , .
  3. ( - ) , . ;
  4. - , . , . , , , , . , .
  5. , , .

..

 

, .

?

1. , , , . - .

2. link , . - ³ POSIX rename.

3. , . - .

 

rename - include <stdio.h>

int rename (const char * oldpath, const char * newpath)

 

oldpath, '

newpath '

0 , -1 ( - errno)

 

rename :

1. newpath , unlink rmdir.

2. link (oldpath, newpath), oldpath .

3. unlink rmdir oldpath.

 

, .

1. 2 , ( newpath).

2. newpath , newpath, oldpath , , .

3. , '

4. newpath , ( rmdir). 3, oldpath - , , , newpath.

5. oldpath , rename , , .

6. rename , .

 

, 1, 2 3 , , , .

rename mv, .

− .

− .

 

7.

1. , . , . ' .

2. . , . ' .

3. , ' . , . , .

4. , . . , .

5. , . ' .

6. (' ) , .

7. ﳿ , .

8. . , . ' .

9. "*. c" "*.cpp".

10. "./Links" ".Link".

11. , ' , , ' "a" "z", .

 

7. .

 

: 㳺 . .

 

:

:

− UNIX;

− ;

− ;

− .

 

 

1. UNIX

 

: , .

 

1. , , inode.

4- , INODE, - , .

' INODE. INODE ' , INODE ' . , ' INODE.

, , INODE. .

 

INODE:

di_mode

file mode

di_count

di_uid

di_gid

di_size

di_addr[0].

di_addr[n]

di_atime

di_mtime

di_ctime

 

INODE "di_". INODE "integer".

file mode - 2- , 9 (read/write) ( exe). 3- , , , . 4 , (exe) ( 4 ).

link count - , . 0, INODE , . => 2 ( ). , INODE '- , .

group id - , ' .

file size - , 0 .

.

UNIX i_list INODE's. i_list '.

 

2. UNIX : () ( ).





:


: 2015-09-20; !; : 742 |


:

:

, , .
==> ...

1368 - | 1279 -


© 2015-2024 lektsii.org - -

: 0.074 .