©®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 ±àÒë
¡¤GCCʹÓÃÖ¸ÄÏ
¡¤CÓïÑÔÔËËã·û
¡¤LinuxÏÂC¿ª·¢»·¾³µÄ¹¹³ÉºÍ°²×°
¡¤fopen()º¯ÊýµÄ²ÎÊý˵Ã÷
¡¤GCCʹÓÃÊÖ²áÓë³£ÓÃÃüÁî
¡¤Scheme ÓïÑÔ½éÉÜ
×îÐÂÎÄÕÂ
¡¤ÔÚ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Çý¶¯³ÌÐò¿ª·¢
¡¤Linux²Ù×÷ϵͳ¶àÏß³Ìͬ²½Mutex
¡¤Linux²Ù×÷ϵͳÏÂC³ÌÐòÓïÑÔ¼òÒ×
¡¤Linuxϵͳƽ̨ϹØÓÚGCC±àÒë¼°
¡¤½â¾öLinuxϵͳϹܵÀ±»½ÓÊÜ·½¹Ø
Google
 
linux C ÎļþȨÏÞ¿ØÖÆÆª
[ ×÷Õß:LinuxÁªÃËÊÕ¼¯  ¼ÓÈëʱ¼ä:2006-06-24 14:02:38  À´×Ô:LinuxÁªÃËÊÕ¼¯ ]
h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int stat(const char * file_name,struct stat *buf);hw5LinuxÁªÃË
º¯Êý˵Ã÷
stat()ÓÃÀ´½«²ÎÊýfile_nameËùÖ¸µÄÎļþ״̬£¬¸´ÖƵ½²ÎÊýbufËùÖ¸µÄ½á¹¹ÖС£hw5LinuxÁªÃË
ÏÂÃæÊÇstruct statÄÚ¸÷²ÎÊýµÄ˵Ã÷hw5LinuxÁªÃË
struct stathw5LinuxÁªÃË
{hw5LinuxÁªÃË
dev_t st_dev; /*device*/hw5LinuxÁªÃË
ino_t st_ino; /*inode*/hw5LinuxÁªÃË
mode_t st_mode; /*protection*/hw5LinuxÁªÃË
nlink_t st_nlink; /*number of hard links */hw5LinuxÁªÃË
uid_t st_uid; /*user ID of owner*/hw5LinuxÁªÃË
gid_t st_gid; /*group ID of owner*/hw5LinuxÁªÃË
dev_t st_rdev; /*device type */hw5LinuxÁªÃË
off_t st_size; /*total size, in bytes*/hw5LinuxÁªÃË
unsigned long st_blksize; /*blocksize for filesystem I/O */hw5LinuxÁªÃË
unsigned long st_blocks; /*number of blocks allocated*/hw5LinuxÁªÃË
time_t st_atime; /* time of lastaccess*/hw5LinuxÁªÃË
time_t st_mtime; /* time of last modification */hw5LinuxÁªÃË
time_t st_ctime; /* time of last change */hw5LinuxÁªÃË
};hw5LinuxÁªÃË
st_dev ÎļþµÄÉ豸±àºÅhw5LinuxÁªÃË
st_ino ÎļþµÄi-nodehw5LinuxÁªÃË
st_mode ÎļþµÄÀàÐͺʹæÈ¡µÄȨÏÞhw5LinuxÁªÃË
st_nlink Á¬µ½¸ÃÎļþµÄÓ²Á¬½ÓÊýÄ¿£¬¸Õ½¨Á¢µÄÎļþֵΪ1¡£hw5LinuxÁªÃË
st_uid ÎļþËùÓÐÕßµÄÓû§Ê¶±ðÂëhw5LinuxÁªÃË
st_gid ÎļþËùÓÐÕßµÄ×éʶ±ðÂëhw5LinuxÁªÃË
st_rdev Èô´ËÎļþΪװÖÃÉ豸Îļþ£¬ÔòΪÆäÉ豸±àºÅhw5LinuxÁªÃË
st_size Îļþ´óС£¬ÒÔ×Ö½Ú¼ÆËãhw5LinuxÁªÃË
st_blksize ÎļþϵͳµÄI/O »º³åÇø´óС¡£hw5LinuxÁªÃË
st_blcoks Õ¼ÓÃÎļþÇø¿éµÄ¸öÊý£¬Ã¿Ò»Çø¿é´óСΪ512 ¸ö×Ö½Ú¡£hw5LinuxÁªÃË
st_atime Îļþ×î½üÒ»´Î±»´æÈ¡»ò±»Ö´ÐеÄʱ¼ä£¬Ò»°ãÖ»ÓÐÔÚÓÃmknod¡¢utime¡¢read¡¢writeÓëtructateʱ¸Ä±ä¡£hw5LinuxÁªÃË
st_mtime Îļþ×îºóÒ»´Î±»Ð޸ĵÄʱ¼ä£¬Ò»°ãÖ»ÓÐÔÚÓÃmknod¡¢utimeºÍwriteʱ²Å»á¸Ä±ähw5LinuxÁªÃË
st_ctime i-node×î½üÒ»´Î±»¸ü¸ÄµÄʱ¼ä£¬´Ë²ÎÊý»áÔÚÎļþËùÓÐÕß¡¢×顢ȨÏÞ±»¸ü¸Äʱ¸üÐÂÏÈǰËùÃèÊöµÄst_mode Ôò¶¨ÒåÁËÏÂÁÐÊýÖÖÇé¿öhw5LinuxÁªÃË
S_IFMT 0170000 ÎļþÀàÐ͵ÄλÕÚÕÖhw5LinuxÁªÃË
S_IFSOCK 0140000 scokethw5LinuxÁªÃË
S_IFLNK 0120000 ·ûºÅÁ¬½Óhw5LinuxÁªÃË
S_IFREG 0100000 Ò»°ãÎļþhw5LinuxÁªÃË
S_IFBLK 0060000 Çø¿é×°ÖÃhw5LinuxÁªÃË
S_IFDIR 0040000 Ŀ¼hw5LinuxÁªÃË
S_IFCHR 0020000 ×Ö·û×°ÖÃhw5LinuxÁªÃË
S_IFIFO 0010000 ÏȽøÏȳöhw5LinuxÁªÃË
S_ISUID 04000 ÎļþµÄ£¨set user-id on execution£©Î»hw5LinuxÁªÃË
S_ISGID 02000 ÎļþµÄ£¨set group-id on execution£©Î»hw5LinuxÁªÃË
S_ISVTX 01000 ÎļþµÄstickyλhw5LinuxÁªÃË
S_IRUSR£¨S_IREAD£© 00400 ÎļþËùÓÐÕ߾߿ɶÁȡȨÏÞhw5LinuxÁªÃË
S_IWUSR£¨S_IWRITE£©00200 ÎļþËùÓÐÕ߾߿ÉдÈëȨÏÞhw5LinuxÁªÃË
S_IXUSR£¨S_IEXEC£© 00100 ÎļþËùÓÐÕ߾߿ÉÖ´ÐÐȨÏÞhw5LinuxÁªÃË
S_IRGRP 00040 Óû§×é¾ß¿É¶ÁȡȨÏÞhw5LinuxÁªÃË
S_IWGRP 00020 Óû§×é¾ß¿ÉдÈëȨÏÞhw5LinuxÁªÃË
S_IXGRP 00010 Óû§×é¾ß¿ÉÖ´ÐÐȨÏÞhw5LinuxÁªÃË
S_IROTH 00004 ÆäËûÓû§¾ß¿É¶ÁȡȨÏÞhw5LinuxÁªÃË
S_IWOTH 00002 ÆäËûÓû§¾ß¿ÉдÈëȨÏÞhw5LinuxÁªÃË
S_IXOTH 00001 ÆäËûÓû§¾ß¿ÉÖ´ÐÐȨÏÞhw5LinuxÁªÃË
ÉÏÊöµÄÎļþÀàÐÍÔÚPOSIX Öж¨ÒåÁ˼ì²éÕâЩÀàÐ͵ĺ궨Òåhw5LinuxÁªÃË
S_ISLNK £¨st_mode£© ÅжÏÊÇ·ñΪ·ûºÅÁ¬½Óhw5LinuxÁªÃË
S_ISREG £¨st_mode£© ÊÇ·ñΪһ°ãÎļþhw5LinuxÁªÃË
S_ISDIR £¨st_mode£©ÊÇ·ñΪĿ¼hw5LinuxÁªÃË
S_ISCHR £¨st_mode£©ÊÇ·ñΪ×Ö·û×°ÖÃÎļþhw5LinuxÁªÃË
S_ISBLK £¨s3e£© ÊÇ·ñΪÏȽøÏȳöhw5LinuxÁªÃË
S_ISSOCK £¨st_mode£© ÊÇ·ñΪsockethw5LinuxÁªÃË
ÈôһĿ¼¾ßÓÐsticky 루S_ISVTX£©£¬Ôò±íʾÔÚ´ËĿ¼ÏµÄÎļþÖ»Äܱ»¸ÃÎļþËùÓÐÕß¡¢´ËĿ¼ËùÓÐÕß»òrootÀ´É¾³ý»ò¸ÄÃû¡£hw5LinuxÁªÃË
·µ»ØÖµ
Ö´Ðгɹ¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎó´úÂë´æÓÚerrnohw5LinuxÁªÃË
´íÎó´úÂë
ENOENT ²ÎÊýfile_nameÖ¸¶¨µÄÎļþ²»´æÔÚhw5LinuxÁªÃË
ENOTDIR ·¾¶ÖеÄĿ¼´æÔÚµ«È´·ÇÕæÕýµÄĿ¼hw5LinuxÁªÃË
ELOOP Óû´ò¿ªµÄÎļþÓйý¶à·ûºÅÁ¬½ÓÎÊÌ⣬ÉÏÏÞΪ16·ûºÅÁ¬½Óhw5LinuxÁªÃË
EFAULT ²ÎÊýbufΪÎÞЧָÕ룬ָÏòÎÞ·¨´æÔÚµÄÄÚ´æ¿Õ¼ähw5LinuxÁªÃË
EACCESS ´æÈ¡Îļþʱ±»¾Ü¾øhw5LinuxÁªÃË
ENOMEM ºËÐÄÄÚ´æ²»×ãhw5LinuxÁªÃË
ENAMETOOLONG ²ÎÊýfile_nameµÄ·¾¶Ãû³ÆÌ«³¤hw5LinuxÁªÃË
·¶Àý
#include<sys/stat.h>hw5LinuxÁªÃË
#include<unistd.h>hw5LinuxÁªÃË
mian()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
struct stat buf;hw5LinuxÁªÃË
stat (¡°/etc/passwd¡±,&buf);hw5LinuxÁªÃË
printf(¡°/etc/passwd file size = %d n¡±,buf.st_size);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
Ö´ÐÐ
/etc/passwd file size = 705hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
symlink£¨½¨Á¢Îļþ·ûºÅÁ¬½Ó£©
Ïà¹Øº¯Êý
link£¬unlinkhw5LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int symlink( const char * oldpath,const char * newpath);hw5LinuxÁªÃË
º¯Êý˵Ã÷
symlink()ÒÔ²ÎÊýnewpathÖ¸¶¨µÄÃû³ÆÀ´½¨Á¢Ò»¸öеÄÁ¬½Ó(·ûºÅÁ¬½Ó)µ½²ÎÊýoldpathËùÖ¸¶¨µÄÒÑ´æÔÚÎļþ¡£²ÎÊýoldpathÖ¸¶¨µÄÎļþ²»Ò»¶¨Òª´æÔÚ£¬Èç¹û²ÎÊýnewpathÖ¸¶¨µÄÃû³ÆÎªÒ»ÒÑ´æÔÚµÄÎļþÔò²»»á½¨Á¢Á¬½Ó¡£hw5LinuxÁªÃË
·µ»ØÖµ
³É¹¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎóÔ­Òò´æÓÚerrno¡£hw5LinuxÁªÃË
´íÎó´úÂë
EPERM ²ÎÊýoldpathÓënewpathËùÖ¸µÄÎļþϵͳ²»Ö§³Ö·ûºÅÁ¬½Óhw5LinuxÁªÃË
EROFS Óû²âÊÔдÈëȨÏÞµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚhw5LinuxÁªÃË
EFAULT ²ÎÊýoldpath»ònewpathÖ¸Õ볬³ö¿É´æÈ¡ÄÚ´æ¿Õ¼ä¡£hw5LinuxÁªÃË
ENAMETOOLONG ²ÎÊýoldpath»ònewpathÌ«³¤hw5LinuxÁªÃË
ENOMEM ºËÐÄÄÚ´æ²»×ãhw5LinuxÁªÃË
EEXIST ²ÎÊýnewpathËùÖ¸µÄÎļþÃûÒÑ´æÔÚ¡£hw5LinuxÁªÃË
EMLINK ²ÎÊýoldpathËùÖ¸µÄÎļþÒÑ´ïµ½×î´óÁ¬½ÓÊýÄ¿hw5LinuxÁªÃË
ELOOP ²ÎÊýpathnameÓйý¶à·ûºÅÁ¬½ÓÎÊÌâhw5LinuxÁªÃË
ENOSPC ÎļþϵͳµÄÊ£Óà¿Õ¼ä²»×ãhw5LinuxÁªÃË
EIO I/O ´æÈ¡´íÎóhw5LinuxÁªÃË
·¶Àý
#include<unistd.h>hw5LinuxÁªÃË
main()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
symlink(¡°/etc/passwd¡±,¡±pass¡±);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
telldir£¨È¡µÃĿ¼Á÷µÄ¶ÁȡλÖã©
Ïà¹Øº¯Êý
open£¬opendir£¬closedir£¬rewinddir£¬seekdir£¬readdir£¬scandirhw5LinuxÁªÃË
±íÍ·Îļþ
#include<dirent.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
off_t telldir(DIR *dir);hw5LinuxÁªÃË
º¯Êý˵Ã÷
telldir()·µ»Ø²ÎÊýdirĿ¼Á÷ĿǰµÄ¶ÁȡλÖᣴ˷µ»ØÖµ´ú±í¾àÀëĿ¼Îļþ¿ªÍ·µÄÆ«ÒÆÁ¿·µ»ØÖµ·µ»ØÏ¸ö¶ÁȡλÖã¬ÓдíÎó·¢Éúʱ·µ»Ø-1¡£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 offset;hw5LinuxÁªÃË
dir = opendir(¡°/etc/rc.d¡±);hw5LinuxÁªÃË
while((ptr = readdir(dir))!=NULL)hw5LinuxÁªÃË
{hw5LinuxÁªÃË
offset = telldir (dir);hw5LinuxÁªÃË
printf(¡°d_name : %s offset :%dn¡±, ptr->d_name,offset);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
closedir(dir);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
Ö´ÐÐ
d_name : . offset :12hw5LinuxÁªÃË
d_name : .. offset:24hw5LinuxÁªÃË
d_name : init.d offset 40hw5LinuxÁªÃË
d_name : rc0.d offset :56hw5LinuxÁªÃË
d_name :rc1.d offset :72hw5LinuxÁªÃË
d_name:rc2.d offset :88hw5LinuxÁªÃË
d_name:rc3.d offset 104hw5LinuxÁªÃË
d_name:rc4.d offset:120hw5LinuxÁªÃË
d_name:rc5.d offset:136hw5LinuxÁªÃË
d_name:rc6.d offset:152hw5LinuxÁªÃË
d_name:rc offset 164hw5LinuxÁªÃË
d_name:rc.local offset :180hw5LinuxÁªÃË
d_name:rc.sysinit offset :4096hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
truncate£¨¸Ä±äÎļþ´óС£©
Ïà¹Øº¯Êý
open£¬ftruncatehw5LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int truncate(const char * path,off_t length);hw5LinuxÁªÃË
º¯Êý˵Ã÷
truncate()»á½«²ÎÊýpath Ö¸¶¨µÄÎļþ´óС¸ÄΪ²ÎÊýlength Ö¸¶¨µÄ´óС¡ LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ԭʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶Ó­À´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ
·ÖÒ³£º1 2 3 4 5 [6] 7
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢