©®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ÁªÃËÊÕ¼¯ ]
£hw5LinuxÁªÃË
EROFS ÓûдÈëȨÏÞµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚ¡£hw5LinuxÁªÃË
EIO I/O ´æÈ¡´íÎó¡£hw5LinuxÁªÃË
·¶Àý
#include<sys/stat.h>hw5LinuxÁªÃË
#include<fcntl.h>hw5LinuxÁªÃË
main()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
int fd;hw5LinuxÁªÃË
fd = open (¡°/etc/passwd¡±,O_RDONLY);hw5LinuxÁªÃË
fchmod(fd,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);hw5LinuxÁªÃË
close(fd);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
fchown£¨¸Ä±äÎļþµÄËùÓÐÕߣ©
Ïà¹Øº¯Êý
chown£¬lchown£¬chmodhw5LinuxÁªÃË
±íÍ·Îļþ
#include<sys/types.h>hw5LinuxÁªÃË
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int fchown(int fd,uid_t owner,gid_t group);hw5LinuxÁªÃË
º¯Êý˵Ã÷
fchown()»á½«²ÎÊýfdÖ¸¶¨ÎļþµÄËùÓÐÕß±ä¸üΪ²ÎÊýowner´ú±íµÄÓû§£¬¶ø½«¸ÃÎļþµÄ×é±ä¸üΪ²ÎÊýgroup×é¡£Èç¹û²ÎÊýowner»ògroupΪ-1£¬¶ÔÓ³µÄËùÓÐÕß»ò×éÓÐËù¸Ä±ä¡£²ÎÊýfd ΪÒÑ´ò¿ªµÄÎļþÃèÊö´Ê¡£µ±rootÓÃfchown()¸Ä±äÎļþËùÓÐÕß»ò×éʱ£¬¸ÃÎļþÈô¾ßS_ISUID»òS_ISGIDȨÏÞ£¬Ôò»áÇå³ý´ËȨÏÞλ¡£hw5LinuxÁªÃË
·µ»ØÖµ
³É¹¦Ôò·µ»Ø0£¬Ê§°ÜÔò·µ»Ø-1£¬´íÎóÔ­Òò´æÓÚerrno¡£hw5LinuxÁªÃË
´íÎó´úÂë
EBADF ²ÎÊýfdÎļþÃèÊö´ÊΪÎÞЧµÄ»ò¸ÃÎļþÒѹرա£hw5LinuxÁªÃË
EPERM ½ø³ÌµÄÓÐЧÓû§Ê¶±ðÂëÓëÓûÐÞ¸ÄȨÏÞµÄÎļþËùÓÐÕß²»Í¬£¬¶øÇÒÒ²²»¾ßrootȨÏÞ£¬»òÊDzÎÊýowner¡¢group²»ÕýÈ·¡£hw5LinuxÁªÃË
EROFS ÓûдÈëµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚ¡£hw5LinuxÁªÃË
ENOENT Ö¸¶¨µÄÎļþ²»´æÔÚhw5LinuxÁªÃË
EIO I/O´æÈ¡´íÎóhw5LinuxÁªÃË
·¶Àý
#include<sys/types.h>hw5LinuxÁªÃË
#include<unistd.h>hw5LinuxÁªÃË
#include<fcntl.h>hw5LinuxÁªÃË
main()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
int fd;hw5LinuxÁªÃË
fd = open (¡°/etc/passwd¡±,O_RDONLY);hw5LinuxÁªÃË
chown(fd,0,0);hw5LinuxÁªÃË
close(fd);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
fstat£¨ÓÉÎļþÃèÊö´ÊÈ¡µÃÎļþ״̬£©
Ïà¹Øº¯Êý
stat£¬lstat£¬chmod£¬chown£¬readlink£¬utimehw5LinuxÁªÃË
±íÍ·Îļþ
#include<sys/stat.h>hw5LinuxÁªÃË
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int fstat(int fildes,struct stat *buf);hw5LinuxÁªÃË
º¯Êý˵Ã÷
fstat()ÓÃÀ´½«²ÎÊýfildesËùÖ¸µÄÎļþ״̬£¬¸´ÖƵ½²ÎÊýbufËùÖ¸µÄ½á¹¹ÖÐ(struct stat)¡£Fstat()Óëstat()×÷ÓÃÍêÈ«Ïàͬ£¬²»Í¬´¦ÔÚÓÚ´«ÈëµÄ²ÎÊýΪÒÑ´ò¿ªµÄÎļþÃèÊö´Ê¡£ÏêϸÄÚÈÝÇë²Î¿¼stat()¡£hw5LinuxÁªÃË
·µ»ØÖµ
Ö´Ðгɹ¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎó´úÂë´æÓÚerrno¡£hw5LinuxÁªÃË
·¶Àý
#include<sys/stat.h>hw5LinuxÁªÃË
#include<unistd.h>hw5LinuxÁªÃË
#include<fcntk.h>hw5LinuxÁªÃË
main()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
struct stat buf;hw5LinuxÁªÃË
int fd;hw5LinuxÁªÃË
fd = open (¡°/etc/passwd¡±,O_RDONLY);hw5LinuxÁªÃË
fstat(fd,&buf);hw5LinuxÁªÃË
printf(¡°/etc/passwd file size +%dn ¡°,buf.st_size);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
Ö´ÐÐ
/etc/passwd file size = 705hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
ftruncate£¨¸Ä±äÎļþ´óС£©
Ïà¹Øº¯Êý
open£¬truncatehw5LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int ftruncate(int fd,off_t length);hw5LinuxÁªÃË
º¯Êý˵Ã÷
ftruncate()»á½«²ÎÊýfdÖ¸¶¨µÄÎļþ´óС¸ÄΪ²ÎÊýlengthÖ¸¶¨µÄ´óС¡£²ÎÊýfdΪÒÑ´ò¿ªµÄÎļþÃèÊö´Ê£¬¶øÇÒ±ØÐëÊÇÒÔдÈëģʽ´ò¿ªµÄÎļþ¡£Èç¹ûÔ­À´µÄÎļþ´óС±È²ÎÊýlength´ó£¬Ôò³¬¹ýµÄ²¿·Ö»á±»É¾È¥¡£hw5LinuxÁªÃË
·µ»ØÖµ
Ö´Ðгɹ¦Ôò·µ»Ø0£¬Ê§°Ü·µ»Ø-1£¬´íÎóÔ­Òò´æÓÚerrno¡£hw5LinuxÁªÃË
´íÎó´úÂë
EBADF ²ÎÊýfdÎļþÃèÊö´ÊΪÎÞЧµÄ»ò¸ÃÎļþÒѹرա£hw5LinuxÁªÃË
EINVAL ²ÎÊýfd Ϊһsocket ²¢·ÇÎļþ£¬»òÊǸÃÎļþ²¢·ÇÒÔдÈëģʽ´ò¿ª¡£hw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
getcwd£¨È¡µÃµ±Ç°µÄ¹¤×÷Ŀ¼£©
Ïà¹Øº¯Êý
get_current_dir_name£¬getwd£¬chdirhw5LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
char * getcwd(char * buf,size_t size);hw5LinuxÁªÃË
º¯Êý˵Ã÷
getcwd()»á½«µ±Ç°µÄ¹¤×÷Ŀ¼¾ø¶Ô·¾¶¸´ÖƵ½²ÎÊýbufËùÖ¸µÄÄÚ´æ¿Õ¼ä£¬²ÎÊýsizeΪbufµÄ¿Õ¼ä´óС¡£ÔÚµ÷Óô˺¯Êýʱ£¬bufËùÖ¸µÄÄÚ´æ¿Õ¼äÒª×ã¹»´ó£¬Èô¹¤×÷Ŀ¼¾ø¶Ô·¾¶µÄ×Ö·û´®³¤¶È³¬¹ý²ÎÊýsize´óС£¬Ôò»ØÖµNULL£¬errnoµÄÖµÔòΪERANGE¡£ÌÈÈô²ÎÊýbufΪNULL£¬getcwd()»áÒÀ²ÎÊýsizeµÄ´óС×Ô¶¯ÅäÖÃÄÚ´æ(ʹÓÃmalloc())£¬Èç¹û²ÎÊýsizeҲΪ0£¬Ôògetcwd()»áÒÀ¹¤×÷Ŀ¼¾ø¶Ô·¾¶µÄ×Ö·û´®³Ì¶ÈÀ´¾ö¶¨ËùÅäÖõÄÄÚ´æ´óС£¬½ø³Ì¿ÉÒÔÔÚʹÓÃÍê´Ë×Ö·û´®ºóÀûÓÃfree()À´ÊͷŴ˿ռ䡣hw5LinuxÁªÃË
·µ»ØÖµ
Ö´Ðгɹ¦Ôò½«½á¹û¸´ÖƵ½²ÎÊýbufËùÖ¸µÄÄÚ´æ¿Õ¼ä£¬»òÊÇ·µ»Ø×Ô¶¯ÅäÖõÄ×Ö·û´®Ö¸Õ롣ʧ°Ü·µ»ØNULL£¬´íÎó´úÂë´æÓÚerrno¡£hw5LinuxÁªÃË
·¶Àý
#include<unistd.h>hw5LinuxÁªÃË
main()hw5LinuxÁªÃË
{hw5LinuxÁªÃË
char buf[80];hw5LinuxÁªÃË
getcwd(buf,sizeof(buf));hw5LinuxÁªÃË
printf(¡°current working directory : %sn¡±,buf);hw5LinuxÁªÃË
}hw5LinuxÁªÃË
Ö´ÐÐ
current working directory :/tmphw5LinuxÁªÃË
¡¡
hw5LinuxÁªÃË
hw5LinuxÁªÃË
hw5LinuxÁªÃË
link£¨½¨Á¢ÎļþÁ¬½Ó£©
Ïà¹Øº¯Êý
symlink£¬unlinkhw5LinuxÁªÃË
±íÍ·Îļþ
#include<unistd.h>hw5LinuxÁªÃË
¶¨Ò庯Êý
int link (const char * oldpath,const char * newpath);hw5LinuxÁªÃË
º¯Êý˵Ã÷
link()ÒÔ²ÎÊýnewpathÖ¸¶¨µÄÃû³ÆÀ´½¨Á¢Ò»¸öеÄÁ¬½Ó(Ó²Á¬½Ó)µ½²ÎÊýoldpathËùÖ¸¶¨µÄÒÑ´æÔÚÎļþ¡£Èç¹û²ÎÊýnewpathÖ¸¶¨µÄÃû³ÆÎªÒ»ÒÑ´æÔÚµÄÎļþÔò²»»á½¨Á¢Á¬½Ó¡ LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ԭʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶Ó­À´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ
·ÖÒ³£º1 2 [3] 4 5 6 7
¡¾ÆÀÂÛ¡¿¡¾¼ÓÈëÊղؼС¿¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿¡¾¹Ø±Õ¡¿
¡ù Ïà¹ØÁ´½Ó
ÎÞÏà¹ØÐÅÏ¢