|
£hw5LinuxÁªÃË
|
·µ»ØÖµ | ³É¹¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎóÔÒò´æÓÚerrno¡£hw5LinuxÁªÃË
|
¸½¼Ó˵Ã÷ | link()Ëù½¨Á¢µÄÓ²Á¬½ÓÎÞ·¨¿çÔ½²»Í¬Îļþϵͳ£¬Èç¹ûÐèÒªÇë¸ÄÓÃsymlink()¡£hw5LinuxÁªÃË
|
´íÎó´úÂë | EXDEV ²ÎÊýoldpathÓënewpath²»Êǽ¨Á¢ÔÚͬһÎļþϵͳ¡£hw5LinuxÁªÃË EPERM ²ÎÊýoldpathÓënewpathËùÖ¸µÄÎļþϵͳ²»Ö§³ÖÓ²Á¬½Óhw5LinuxÁªÃË EROFS Îļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚhw5LinuxÁªÃË EFAULT ²ÎÊýoldpath»ònewpath Ö¸Õ볬³ö¿É´æÈ¡ÄÚ´æ¿Õ¼ä¡£hw5LinuxÁªÃË ENAMETOLLONG ²ÎÊýoldpath»ònewpathÌ«³¤hw5LinuxÁªÃË ENOMEM ºËÐÄÄÚ´æ²»×ãhw5LinuxÁªÃË EEXIST ²ÎÊýnewpathËùÖ¸µÄÎļþÃûÒÑ´æÔÚ¡£hw5LinuxÁªÃË EMLINK ²ÎÊýoldpathËùÖ¸µÄÎļþÒÑ´ï×î´óÁ¬½ÓÊýÄ¿¡£hw5LinuxÁªÃË ELOOP ²ÎÊýpathnameÓйý¶à·ûºÅÁ¬½ÓÎÊÌâhw5LinuxÁªÃË ENOSPC ÎļþϵͳµÄÊ£Óà¿Õ¼ä²»×ã¡£hw5LinuxÁªÃË EIO I/O ´æÈ¡´íÎó¡£hw5LinuxÁªÃË
|
·¶Àý | /* ½¨Á¢/etc/passwd µÄÓ²Á¬½ÓΪpass */hw5LinuxÁªÃË #include<unistd.h>hw5LinuxÁªÃË main()hw5LinuxÁªÃË {hw5LinuxÁªÃË link(¡°/etc/passwd¡±,¡±pass¡±);hw5LinuxÁªÃË }hw5LinuxÁªÃË
|
| ¡¡ |
hw5LinuxÁªÃË
| hw5LinuxÁªÃË lstat£¨ÓÉÎļþÃèÊö´ÊÈ¡µÃÎļþ״̬£© |
Ïà¹Øº¯Êý | stat£¬fstat£¬chmod£¬chown£¬readlink£¬utimehw5LinuxÁªÃË
|
±íÍ·Îļþ | #include<sys/stat.h>hw5LinuxÁªÃË #include<unistd.h>hw5LinuxÁªÃË
|
¶¨Ò庯Êý | int lstat (const char * file_name.struct stat * buf);hw5LinuxÁªÃË
|
º¯Êý˵Ã÷ | lstat()Óëstat()×÷ÓÃÍêÈ«Ïàͬ£¬¶¼ÊÇÈ¡µÃ²ÎÊýfile_nameËùÖ¸µÄÎļþ״̬£¬Æä²î±ðÔÚÓÚ£¬µ±ÎļþΪ·ûºÅÁ¬½Óʱ£¬lstat()»á·µ»Ø¸Ãlink±¾ÉíµÄ״̬¡£ÏêϸÄÚÈÝÇë²Î¿¼stat()¡£hw5LinuxÁªÃË
|
·µ»ØÖµ | Ö´Ðгɹ¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎó´úÂë´æÓÚerrno¡£hw5LinuxÁªÃË
|
·¶Àý | ²Î¿¼stat()¡£hw5LinuxÁªÃË
|
| ¡¡ |
hw5LinuxÁªÃË
| hw5LinuxÁªÃË opendir£¨´ò¿ªÄ¿Â¼£© |
Ïà¹Øº¯Êý | open£¬readdir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandirhw5LinuxÁªÃË
|
±íÍ·Îļþ | #include<sys/types.h>hw5LinuxÁªÃË #include<dirent.h>hw5LinuxÁªÃË
|
¶¨Ò庯Êý | DIR * opendir(const char * name);hw5LinuxÁªÃË
|
º¯Êý˵Ã÷ | opendir()ÓÃÀ´´ò¿ª²ÎÊýnameÖ¸¶¨µÄĿ¼£¬²¢·µ»ØDIR*ÐÎ̬µÄĿ¼Á÷£¬ºÍopen()ÀàËÆ£¬½ÓÏÂÀ´¶ÔĿ¼µÄ¶ÁÈ¡ºÍËÑË÷¶¼ÒªÊ¹Óô˷µ»ØÖµ¡£hw5LinuxÁªÃË
|
·µ»ØÖµ | ³É¹¦Ôò·µ»ØDIR* ÐÍ̬µÄĿ¼Á÷£¬´ò¿ªÊ§°ÜÔò·µ»ØNULL¡£hw5LinuxÁªÃË
|
´íÎó´úÂë | EACCESS ȨÏÞ²»×ãhw5LinuxÁªÃË EMFILE ÒÑ´ïµ½½ø³Ì¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£hw5LinuxÁªÃË ENFILE ÒѴﵽϵͳ¿Éͬʱ´ò¿ªµÄÎļþÊýÉÏÏÞ¡£hw5LinuxÁªÃË ENOTDIR ²ÎÊýname·ÇÕæÕýµÄĿ¼hw5LinuxÁªÃË ENOENT ²ÎÊýname Ö¸¶¨µÄĿ¼²»´æÔÚ£¬»òÊDzÎÊýname Ϊһ¿Õ×Ö·û´®¡£hw5LinuxÁªÃË ENOMEM ºËÐÄÄÚ´æ²»×ã¡£hw5LinuxÁªÃË
|
| ¡¡ |
hw5LinuxÁªÃË
| hw5LinuxÁªÃË readdir£¨¶ÁȡĿ¼£© |
Ïà¹Øº¯Êý | open£¬opendir£¬closedir£¬rewinddir£¬seekdir£¬telldir£¬scandirhw5LinuxÁªÃË
|
±íÍ·Îļþ | #include<sys/types.h>hw5LinuxÁªÃË #include<dirent.h>hw5LinuxÁªÃË
|
¶¨Ò庯Êý | struct dirent * readdir(DIR * dir);hw5LinuxÁªÃË
|
º¯Êý˵Ã÷ | readdir()·µ»Ø²ÎÊýdirĿ¼Á÷µÄϸöĿ¼½øÈëµã¡£hw5LinuxÁªÃË ½á¹¹dirent¶¨ÒåÈçÏÂhw5LinuxÁªÃË struct direnthw5LinuxÁªÃË {hw5LinuxÁªÃË ino_t d_ino;hw5LinuxÁªÃË ff_t d_off;hw5LinuxÁªÃË signed short int d_reclen;hw5LinuxÁªÃË unsigned char d_type;hw5LinuxÁªÃË har d_name[256;hw5LinuxÁªÃË };hw5LinuxÁªÃË d_ino ´ËĿ¼½øÈëµãµÄinodehw5LinuxÁªÃË d_off Ŀ¼Îļþ¿ªÍ·ÖÁ´ËĿ¼½øÈëµãµÄÎ»ÒÆhw5LinuxÁªÃË d_reclen _nameµÄ³¤¶È£¬²»°üº¬NULL×Ö·ûhw5LinuxÁªÃË d_type d_name ËùÖ¸µÄÎļþÀàÐÍhw5LinuxÁªÃË d_name ÎļþÃûhw5LinuxÁªÃË
|
·µ»ØÖµ | ³É¹¦Ôò·µ»ØÏ¸öĿ¼½øÈëµã¡£ÓдíÎó·¢Éú»ò¶ÁÈ¡µ½Ä¿Â¼ÎļþβÔò·µ»ØNULL¡£hw5LinuxÁªÃË
|
¸½¼Ó˵Ã÷ | EBADF²ÎÊýdirΪÎÞЧµÄĿ¼Á÷¡£hw5LinuxÁªÃË
|
·¶Àý | #include<sys/types.h>hw5LinuxÁªÃË #include<dirent.h>hw5LinuxÁªÃË #include<unistd.h>hw5LinuxÁªÃË main()hw5LinuxÁªÃË {hw5LinuxÁªÃË DIR * dir;hw5LinuxÁªÃË struct dirent * ptr;hw5LinuxÁªÃË int i;hw5LinuxÁªÃË dir =opendir(¡°/etc/rc.d¡±);hw5LinuxÁªÃË while((ptr = readdir(dir))!=NULL)hw5LinuxÁªÃË {hw5LinuxÁªÃË printf(¡°d_name: %sn¡±,ptr->d_name);hw5LinuxÁªÃË }hw5LinuxÁªÃË closedir(dir);hw5LinuxÁªÃË }hw5LinuxÁªÃË
|
Ö´ÐÐ | d_name:.hw5LinuxÁªÃË d_name:..hw5LinuxÁªÃË d_name:init.dhw5LinuxÁªÃË d_name:rc0.dhw5LinuxÁªÃË d_name:rc1.dhw5LinuxÁªÃË d_name:rc2.dhw5LinuxÁªÃË d_name:rc3.dhw5LinuxÁªÃË d_name:rc4.dhw5LinuxÁªÃË d_name:rc5.dhw5LinuxÁªÃË d_name:rc6.dhw5LinuxÁªÃË d_name:rchw5LinuxÁªÃË d_name:rc.localhw5LinuxÁªÃË d_name:rc.sysinithw5LinuxÁªÃË
|
| ¡¡ |
hw5LinuxÁªÃË
| hw5LinuxÁªÃË readlink£¨È¡µÃ·ûºÅÁ¬½ÓËùÖ¸µÄÎļþ£© |
Ïà¹Øº¯Êý | stat£¬lstat£¬symlinkhw5LinuxÁªÃË
|
±íÍ·Îļþ | #include<unistd.h>hw5LinuxÁªÃË
|
¶¨Ò庯Êý | int readlink(const char * path ,char * buf,size_t bufsiz);hw5LinuxÁªÃË
|
º¯Êý˵Ã÷ | readlink()»á½«²ÎÊýpathµÄ·ûºÅÁ¬½ÓÄÚÈÝ´æµ½²ÎÊýbufËùÖ¸µÄÄÚ´æ¿Õ¼ä£¬·µ»ØµÄÄÚÈݲ»ÊÇÒÔNULL×÷×Ö·û´®½á⣬µ«»á½«×Ö·û´®µÄ×Ö·ûÊý·µ»Ø¡£Èô²ÎÊýbufsizСÓÚ·ûºÅÁ¬½ÓµÄÄÚÈݳ¤¶È£¬¹ý³¤µÄÄÚÈݻᱻ½Ø¶Ï¡£hw5LinuxÁªÃË
|
·µ»ØÖµ | Ö´Ðгɹ¦Ôò´«·ûºÅÁ¬½ÓËùÖ¸µÄÎļþ·¾¶×Ö·û´®£¬Ê§°ÜÔò·µ»Ø-1£¬´íÎó´úÂë´æÓÚerrno¡£hw5LinuxÁªÃË
|
´íÎó´úÂë | EACCESS È¡Îļþʱ±»¾Ü¾ø£¬È¨ÏÞ²»¹»hw5LinuxÁªÃË EINVAL ²ÎÊýbufsiz Ϊ¸ºÊýhw5LinuxÁªÃË EIO I/O ´æÈ¡´íÎó¡£hw5LinuxÁªÃË ELOOP Óû´ò¿ªµÄÎļþÓйý¶à·ûºÅÁ¬½ÓÎÊÌâ¡£hw5LinuxÁªÃË ENAMETOOLONG ²ÎÊýpathµÄ·¾¶Ãû³ÆÌ«³¤hw5LinuxÁªÃË ENOENT ²ÎÊýpathËùÖ¸¶¨µÄÎļþ²»´æÔÚhw5LinuxÁªÃË ENOMEM ºËÐÄÄÚ´æ²»×ãhw5LinuxÁªÃË ENOTDIR ²ÎÊýpath·¾¶ÖеÄĿ¼´æÔÚµ«È´·ÇÕæÕýµÄĿ¼¡£hw5LinuxÁªÃË
|
| ¡¡ |
hw5LinuxÁªÃË
| hw5LinuxÁªÃË remove£¨É¾³ýÎļþ£© |
Ïà¹Øº¯Êý | link£¬rename£
LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ÔʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶ÓÀ´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ |
|
|
|
|