©®linuxÉçÇø©® °®ÐÄÔ®Öú ©® LinuxÈÏÖ¤©®ÏµÁÐ½Ì³Ì ©® Òµ½ç¶¯Ì¬©® Õ¾ÎñÐÂÎÅ ©® ¹«Ë¾ÕÐÆ¸©® ½¨ÒéÁôÑÔ ©® ÍøÖ·´óÈ« ©®LPIרÌâ©® CISCOרÌâ
ÉèΪÊ×Ò³
¼ÓÈëÊÕ²Ø
¹ÜÀíÍŶÓ
JSP  
JAVA  
PERL  
 ÄúµÄλÖãºÊ×Ò³ > article > Linux¿ª·¢Çø > Èí¼þ¿ª·¢ >
À¸Ä¿µ¼À¸
×ÊÁÏËÑË÷
ÈÈÃÅÎÄÕÂ
¡¤Linux Ï C ÓïÑÔ±à³Ì
¡¤LinuxϵÄͨÓÃÏ̳߳ش´½¨
¡¤C++×Ö·û´®×ª»»Æª
¡¤linux C ½ø³Ì²Ù×÷ƪ
¡¤linuxÉϵÄC/C++±àÒëÆ÷gcc/egcs
¡¤linux C ÎļþȨÏÞ¿ØÖÆÆª
¡¤GCCʹÓÃÊÖ²á
¡¤linux C ½Ó¿Ú´¦ÀíÆª
¡¤ÔÚRedhat LinuxÉϰ²×° GCC ±àÒë
¡¤fopen()º¯ÊýµÄ²ÎÊý˵Ã÷
¡¤CÓïÑÔÔËËã·û
¡¤GCCʹÓÃÖ¸ÄÏ
¡¤LinuxÏÂC¿ª·¢»·¾³µÄ¹¹³ÉºÍ°²×°
¡¤GCCʹÓÃÊÖ²áÓë³£ÓÃÃüÁî
¡¤Linux³£ÓÃCº¯Êý-ÈÕÆÚʱ¼äƪ
×îÐÂÎÄÕÂ
¡¤epollÈëÃÅ
¡¤ÔÚLinuxÏ·¢²¼³ÌÐòÐèҪעÒâ°æ±¾
¡¤Suse LinuxϵͳÏÂJAVA AWT½çÃæ
¡¤Vim±àÒëÆ÷ÅäºÏctagsʵÏÖº¯ÊýÔ­
¡¤ÔÚUbuntu Linux 8.04ÉϹ¹½¨GCC
¡¤Linux²Ù×÷ϵͳÏÂSocket±à³ÌµØÖ·
¡¤½«VC³ÌÐòÒÆÖ²µ½LinuxϵͳµÄ¼¸µã
¡¤LinuxÏÂmalloc/freeÓënew/dele
¡¤LinuxÏÂÓÃGTKºÍsocketʵÏÖ¼òµ¥
¡¤Linux²Ù×÷ϵͳÏÂÈÃTomcatÆô¶¯ÔÚ
¡¤Linux²Ù×÷ϵͳÖÐÈçºÎ±àÒëC³ÌÐò
¡¤¼¸ÖÖ³£±»ÈËÃǺöÂÔµÄLinuxϵͳÏÂ
¡¤Eclipse±à³Ì¹¤¾ß ÔÚUbuntuϵÄ
¡¤Linux²Ù×÷ϵͳϵÄÍøÂçµØÖ·×ª»»
¡¤ÀÏÊÖ¾­Ñé̸£ºLinuxÇý¶¯³ÌÐò¿ª·¢
Google
 
linux C ÎļþȨÏÞ¿ØÖÆÆª
[ ×÷Õß:LinuxÁªÃËÊÕ¼¯  ¼ÓÈëʱ¼ä:2006-06-24 14:02:38  À´×Ô:LinuxÁªÃËÊÕ¼¯ ]
access£¨ÅжÏÊÇ·ñ¾ßÓдæÈ¡ÎļþµÄȨÏÞ£©
Ïà¹Øº¯Êý
stat£¬open£¬chmod£¬chown£¬setuid£¬setgidWZ6LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>WZ6LinuxÁªÃË
¶¨Ò庯Êý
int access(const char * pathname,int mode);WZ6LinuxÁªÃË
º¯Êý˵Ã÷
access()»á¼ì²éÊÇ·ñ¿ÉÒÔ¶Á/дijһÒÑ´æÔÚµÄÎļþ¡£²ÎÊýmodeÓм¸ÖÖÇé¿ö×éºÏ£¬R_OK£¬W_OK£¬X_OK ºÍF_OK¡£R_OK£¬W_OKÓëX_OKÓÃÀ´¼ì²éÎļþÊÇ·ñ¾ßÓжÁÈ¡¡¢Ð´ÈëºÍÖ´ÐеÄȨÏÞ¡£F_OKÔòÊÇÓÃÀ´ÅжϸÃÎļþÊÇ·ñ´æÔÚ¡£ÓÉÓÚaccess()Ö»×÷ȨÏ޵ĺ˲飬²¢²»Àí»áÎļþÐÎ̬»òÎļþÄÚÈÝ£¬Òò´Ë£¬Èç¹ûһĿ¼±íʾΪ¡°¿ÉдÈ롱£¬±íʾ¿ÉÒÔÔÚ¸ÃĿ¼Öн¨Á¢ÐÂÎļþµÈ²Ù×÷£¬¶ø·ÇÒâζ´ËĿ¼¿ÉÒÔ±»µ±×öÎļþ´¦Àí¡£ÀýÈ磬Äã»á·¢ÏÖDOSµÄÎļþ¶¼¾ßÓС°¿ÉÖ´ÐС±È¨ÏÞ£¬µ«ÓÃexecve()Ö´ÐÐʱÔò»áʧ°Ü¡£WZ6LinuxÁªÃË
·µ»ØÖµ
ÈôËùÓÐÓû²éºËµÄȨÏÞ¶¼Í¨¹ýÁ˼ì²éÔò·µ»Ø0Öµ£¬±íʾ³É¹¦£¬Ö»ÒªÓÐһȨÏÞ±»½ûÖ¹Ôò·µ»Ø-1¡£WZ6LinuxÁªÃË
´íÎó´úÂë
EACCESS ²ÎÊýpathname ËùÖ¸¶¨µÄÎļþ²»·ûºÏËùÒªÇó²âÊÔµÄȨÏÞ¡£WZ6LinuxÁªÃË
EROFS Óû²âÊÔдÈëȨÏÞµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚ¡£WZ6LinuxÁªÃË
EFAULT ²ÎÊýpathnameÖ¸Õ볬³ö¿É´æÈ¡ÄÚ´æ¿Õ¼ä¡£WZ6LinuxÁªÃË
EINVAL ²ÎÊýmode ²»ÕýÈ·¡£WZ6LinuxÁªÃË
ENAMETOOLONG ²ÎÊýpathnameÌ«³¤¡£WZ6LinuxÁªÃË
ENOTDIR ²ÎÊýpathnameΪһĿ¼¡£WZ6LinuxÁªÃË
ENOMEM ºËÐÄÄÚ´æ²»×ãWZ6LinuxÁªÃË
ELOOP ²ÎÊýpathnameÓйý¶à·ûºÅÁ¬½ÓÎÊÌâ¡£WZ6LinuxÁªÃË
EIO I/O ´æÈ¡´íÎó¡£WZ6LinuxÁªÃË
¸½¼Ó˵Ã÷
ʹÓÃaccess()×÷Óû§ÈÏÖ¤·½ÃæµÄÅжÏÒªÌØ±ðСÐÄ£¬ÀýÈçÔÚaccess()ºóÔÙ×öopen()µÄ¿ÕÎļþ¿ÉÄÜ»áÔì³Éϵͳ°²È«ÉϵÄÎÊÌâ¡£WZ6LinuxÁªÃË
·¶Àý
/* ÅжÏÊÇ·ñÔÊÐí¶ÁÈ¡/etc/passwd */WZ6LinuxÁªÃË
#include<unistd.h>WZ6LinuxÁªÃË
int main()WZ6LinuxÁªÃË
{WZ6LinuxÁªÃË
if (access(¡°/etc/passwd¡±,R_OK) = =0)WZ6LinuxÁªÃË
printf(¡°/etc/passwd can be readn¡±);WZ6LinuxÁªÃË
}WZ6LinuxÁªÃË
Ö´ÐÐ
/etc/passwd can be readWZ6LinuxÁªÃË
¡¡
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
alphasort£¨ÒÀ×Öĸ˳ÐòÅÅÐòĿ¼½á¹¹£©
Ïà¹Øº¯Êý
scandir£¬qsortWZ6LinuxÁªÃË
±íÍ·Îļþ
#include<dirent.h>WZ6LinuxÁªÃË
¶¨Ò庯Êý
int alphasort(const struct dirent **a,const struct dirent **b);WZ6LinuxÁªÃË
º¯Êý˵Ã÷
alphasort()Ϊscandir()×îºóµ÷ÓÃqsort()º¯Êýʱ´«¸øqsort()×÷ΪÅжϵĺ¯Êý£¬Ïêϸ˵Ã÷Çë²Î¿¼scandir()¼°qsort()¡£WZ6LinuxÁªÃË
·µ»ØÖµ
²Î¿¼qsort()¡£WZ6LinuxÁªÃË
·¶Àý
/* ¶ÁÈ¡/Ŀ¼ÏÂËùÓеÄĿ¼½á¹¹£¬²¢ÒÀ×Öĸ˳ÐòÅÅÁÐ*/WZ6LinuxÁªÃË
main()WZ6LinuxÁªÃË
{WZ6LinuxÁªÃË
struct dirent **namelist;WZ6LinuxÁªÃË
int i,total;WZ6LinuxÁªÃË
total = scandir(¡°/¡±,&namelist ,0,alphasort);WZ6LinuxÁªÃË
if(total <0)WZ6LinuxÁªÃË
perror(¡°scandir¡±);WZ6LinuxÁªÃË
else{WZ6LinuxÁªÃË
for(i=0;i<total;i++)WZ6LinuxÁªÃË
printf(¡°%sn¡±,namelist[i]->d_name);WZ6LinuxÁªÃË
printf(¡°total = %dn¡±,total);WZ6LinuxÁªÃË
}WZ6LinuxÁªÃË
}WZ6LinuxÁªÃË
Ö´ÐÐ
..WZ6LinuxÁªÃË
.gnomeWZ6LinuxÁªÃË
.gnome_privateWZ6LinuxÁªÃË
ErrorLogWZ6LinuxÁªÃË
WeblogWZ6LinuxÁªÃË
binWZ6LinuxÁªÃË
bootWZ6LinuxÁªÃË
devWZ6LinuxÁªÃË
doscWZ6LinuxÁªÃË
dosdWZ6LinuxÁªÃË
etcWZ6LinuxÁªÃË
homeWZ6LinuxÁªÃË
libWZ6LinuxÁªÃË
lost+foundWZ6LinuxÁªÃË
miscWZ6LinuxÁªÃË
mntWZ6LinuxÁªÃË
optWZ6LinuxÁªÃË
procWZ6LinuxÁªÃË
rootWZ6LinuxÁªÃË
sbinWZ6LinuxÁªÃË
tmpWZ6LinuxÁªÃË
usrWZ6LinuxÁªÃË
varWZ6LinuxÁªÃË
total = 24WZ6LinuxÁªÃË
¡¡
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
chdir£¨¸Ä±äµ±Ç°µÄ¹¤×÷£¨Ä¿Â¼£©
Ïà¹Øº¯Êý
getcwd£¬chrootWZ6LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>WZ6LinuxÁªÃË
¶¨Ò庯Êý
int chdir(const char * path);WZ6LinuxÁªÃË
º¯Êý˵Ã÷
chdir()ÓÃÀ´½«µ±Ç°µÄ¹¤×÷Ŀ¼¸Ä±ä³ÉÒÔ²ÎÊýpathËùÖ¸µÄĿ¼¡£WZ6LinuxÁªÃË
·µ»ØÖµ
Ö´Ðгɹ¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬errnoΪ´íÎó´úÂë¡£WZ6LinuxÁªÃË
·¶Àý
#include<unistd.h>WZ6LinuxÁªÃË
main()WZ6LinuxÁªÃË
{WZ6LinuxÁªÃË
chdir(¡°/tmp¡±);WZ6LinuxÁªÃË
printf(¡°current working directory: %sn¡±,getcwd(NULL,NULL));WZ6LinuxÁªÃË
}WZ6LinuxÁªÃË
Ö´ÐÐ
current working directory :/tmpWZ6LinuxÁªÃË
¡¡
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
WZ6LinuxÁªÃË
chmod£¨¸Ä±äÎļþµÄȨÏÞ£©
Ïà¹Øº¯Êý
fchmod£¬stat£¬open£¬chownWZ6LinuxÁªÃË
±íÍ·Îļþ
#include<sys/types.h>WZ6LinuxÁªÃË
#include<sys/stat.h>WZ6LinuxÁªÃË
¶¨Ò庯Êý
int chmod(const char * path,mode_t mode);WZ6LinuxÁªÃË
º¯Êý˵Ã÷
chmod()»áÒÀ²ÎÊýmode ȨÏÞÀ´¸ü¸Ä²ÎÊýpath Ö¸¶¨ÎļþµÄȨÏÞ¡£WZ6LinuxÁªÃË
²ÎÊý
mode ÓÐÏÂÁÐÊýÖÖ×éºÏWZ6LinuxÁªÃË
S_ISUID 04000 ÎļþµÄ£¨set user-id on execution£©Î»WZ6LinuxÁªÃË
S_ISGID 02000 ÎļþµÄ£¨set group-id on execution£©Î»WZ6LinuxÁªÃË
S_ISVTX 01000 ÎļþµÄstickyλWZ6LinuxÁªÃË
S_IRUSR£¨S_IREAD£© 00400 ÎļþËùÓÐÕ߾߿ɶÁȡȨÏÞWZ6LinuxÁªÃË
S_IWUSR£¨S_IWRITE£©00200 ÎļþËùÓÐÕ߾߿ÉдÈëȨÏÞWZ6LinuxÁªÃË
S_IXUSR£¨S_IEXEC£© 00100 ÎļþËùÓÐÕ߾߿ÉÖ´ÐÐȨÏÞWZ6LinuxÁªÃË
S_IRGRP 00040 Óû§×é¾ß¿É¶ÁȡȨÏÞWZ6LinuxÁªÃË
S_IWGRP 00020 Óû§×é¾ß¿ÉдÈëȨÏÞWZ6LinuxÁªÃË
S_IXGRP 00010 Óû§×é¾ß¿ÉÖ´ÐÐȨÏÞWZ6LinuxÁªÃË
S_IROTH 00004 ÆäËûÓû§¾ß¿É¶ÁȡȨÏÞWZ6LinuxÁªÃË
S_IWOTH 00002 ÆäËûÓû§¾ß¿ÉдÈëȨÏÞWZ6LinuxÁªÃË
S_IXOTH 00001 ÆäËûÓû§¾ß¿ÉÖ´ÐÐȨÏÞWZ6LinuxÁªÃË
Ö»ÓиÃÎļþµÄËùÓÐÕß»òÓÐЧÓû§Ê¶±ðÂëΪ0£¬²Å¿ÉÒÔÐ޸ĸÃÎļþȨÏÞ¡£»ùÓÚϵͳ°²È«£¬Èç¹ûÓû½«Êý¾ÝдÈëÒ»Ö´ÐÐÎļþ£¬¶ø¸ÃÖ´ÐÐÎļþ¾ßÓÐS_ISUID »òS_ISGID ȨÏÞ£¬ÔòÕâÁ½¸öλ»á±»Çå³ý¡£Èç¹ûһĿ¼¾ßÓÐS_ISUID λȨÏÞ£¬±íʾÔÚ´ËĿ¼ÏÂÖ»ÓиÃÎļþµÄËùÓÐÕß»òroot¿ÉÒÔɾ³ý¸ÃÎļþ¡£WZ6LinuxÁªÃË
·µ»ØÖµ
ȨÏ޸ıä³É¹¦·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎóÔ­Òò´æÓÚerrno¡£WZ6LinuxÁªÃË
´íÎó´úÂë
EPERM ½ø³ÌµÄÓÐЧÓû§Ê¶±ðÂëÓëÓûÐÞ¸ÄȨÏÞµÄÎļþÓµÓÐÕß²»Í¬£¬¶øÇÒÒ²²»¾ßrootȨÏÞ¡£WZ6LinuxÁªÃË
EACCESS ²ÎÊýpathËùÖ¸¶¨µÄÎļþÎÞ·¨´æÈ¡¡£WZ6LinuxÁªÃË
EROFS ÓûдÈëȨÏÞµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚ¡£WZ6LinuxÁªÃË
EFAULT ²ÎÊýpathÖ¸Õ볬³ö¿É´æÈ¡ÄÚ´æ¿Õ¼ä¡£WZ6LinuxÁªÃË
EINVAL ²ÎÊýmode²»ÕýÈ·WZ6LinuxÁªÃË
ENAMETOOLONG ²ÎÊýpathÌ«³¤WZ6LinuxÁªÃË
ENOENT Ö¸¶¨µÄÎļþ²»´æÔÚWZ6LinuxÁªÃË
ENOTDIR ²ÎÊýpath·¾¶²¢·ÇһĿ¼WZ6LinuxÁªÃË
ENOMEM ºËÐÄÄÚ´æ²»×ãWZ6LinuxÁªÃË
ELOOP ²ÎÊýpathÓйý¶à·ûºÅÁ¬½ÓÎÊÌâ¡ LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ԭʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶Ó­À´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ
·ÖÒ³£º[1] 2 3 4 5 6 7
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢