Linux文件操作函数.docx

上传人:b****7 文档编号:11506068 上传时间:2023-03-02 格式:DOCX 页数:6 大小:18.22KB
下载 相关 举报
Linux文件操作函数.docx_第1页
第1页 / 共6页
Linux文件操作函数.docx_第2页
第2页 / 共6页
Linux文件操作函数.docx_第3页
第3页 / 共6页
Linux文件操作函数.docx_第4页
第4页 / 共6页
Linux文件操作函数.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

Linux文件操作函数.docx

《Linux文件操作函数.docx》由会员分享,可在线阅读,更多相关《Linux文件操作函数.docx(6页珍藏版)》请在冰豆网上搜索。

Linux文件操作函数.docx

Linux文件操作函数

linuxread/writeºÍfread/fwriteÓÐʲôÇø±ð

1,freadÊÇ´ø»º³åµÄ,read²»´ø»º³å.

2,fopenÊDZê×¼cÀﶨÒåµÄ,openÊÇPOSIXÖж¨ÒåµÄ.

3,fread¿ÉÒÔ¶ÁÒ»¸ö½á¹¹.readÔÚlinux/unixÖжÁ¶þ½øÖÆÓëÆÕͨÎļþûÓÐÇø±ð.

4,fopen²»ÄÜÖ¸¶¨Òª´´½¨ÎļþµÄȨÏÞ.open¿ÉÒÔÖ¸¶¨È¨ÏÞ.

5,fopen·µ»ØÖ¸Õë,open·µ»ØÎļþÃèÊö·û(ÕûÊý).

6,linux/unixÖÐÈκÎÉ豸¶¼ÊÇÎļþ,¶¼¿ÉÒÔÓÃopen,read.

Èç¹ûÎļþµÄ´óСÊÇ8k¡£

ÄãÈç¹ûÓÃread/write£¬ÇÒÖ»·ÖÅäÁË2kµÄ»º´æ£¬ÔòÒª½«´ËÎļþ¶Á³öÐèÒª×ö4´Îϵͳµ÷ÓÃÀ´Êµ¼Ê´Ó´ÅÅÌÉ϶Á³ö¡£

Èç¹ûÄãÓÃfread/fwrite£¬Ôòϵͳ×Ô¶¯·ÖÅ仺´æ£¬Ôò¶Á³ö´ËÎļþÖ»ÒªÒ»´Îϵͳµ÷ÓôӴÅÅÌÉ϶Á³ö¡£

Ò²¾ÍÊÇÓÃread/writeÒª¶Á4´Î´ÅÅÌ£¬¶øÓÃfread/fwriteÔòÖ»Òª¶Á1´Î´ÅÅÌ¡£Ð§ÂʱÈread/writeÒª¸ß4±¶¡£

Èç¹û³ÌÐò¶ÔÄÚ´æÓÐÏÞÖÆ£¬ÔòÓÃread/write±È½ÏºÃ¡£

¶¼ÓÃfreadºÍfwrite,Ëü×Ô¶¯·ÖÅ仺´æ,ËٶȻáºÜ¿ì,±È×Ô¼ºÀ´×öÒª¼òµ¥¡£Èç¹ûÒª´¦ÀíһЩÌØÊâµÄÃèÊö·û,ÓÃreadºÍwrite,ÈçÌ×½Ó¿Ú,¹ÜµÀÖ®ÀàµÄ

ϵͳµ÷ÓÃwriteµÄЧÂÊÈ¡¾öÓÚÄãbufµÄ´óСºÍÄãҪдÈëµÄ×ÜÊýÁ¿£¬Èç¹ûbuf̫С£¬Äã½øÈëÄں˿ռäµÄ´ÎÊý´óÔö£¬Ð§Âʾ͵ÍÏ¡£¶øfwrite»áÌæÄã×ö»º´æ£¬¼õÉÙÁËʵ¼Ê³öÏÖµÄϵͳµ÷Óã¬ËùÒÔЧÂʱȽϸߡ£

Èç¹ûÖ»µ÷ÓÃÒ»´Î(¿ÉÄÜÂð?

)£¬ÕâÁ©²î²»¶à£¬ÑϸñÀ´ËµwriteÒª¿ìÒ»µãµã(ÒòΪʵ¼ÊÉÏfwrite×îºó»¹ÊÇÓÃÁËwrite×öÕæÕýµÄдÈëÎļþϵͳ¹¤×÷)£¬µ«ÊÇÕâÆäÖеIJî±ðÎÞËùν¡£

 

open£¨´ò¿ªÎļþ£©

Ïà¹Øº¯Êý

read£¬write£¬fcntl£¬close£¬link£¬stat£¬umask£¬unlink£¬fopen

±íÍ·Îļþ

#include

#include

#include

¶¨Ò庯Êý

intopen(constchar*pathname,intflags);

intopen(constchar*pathname,intflags,mode_tmode);

º¯Êý˵Ã÷

²ÎÊýpathnameÖ¸ÏòÓû´ò¿ªµÄÎļþ·¾¶×Ö·û´®¡£ÏÂÁÐÊDzÎÊýflagsËùÄÜʹÓõÄÆì±ê:

O_RDONLYÒÔÖ»¶Á·½Ê½´ò¿ªÎļþ

O_WRONLYÒÔֻд·½Ê½´ò¿ªÎļþ

O_RDWRÒԿɶÁд·½Ê½´ò¿ªÎļþ¡£ÉÏÊöÈýÖÖÆì±êÊÇ»¥³âµÄ£¬Ò²¾ÍÊDz»¿ÉͬʱʹÓ㬵«¿ÉÓëÏÂÁеÄÆì±êÀûÓÃOR(|)ÔËËã·û×éºÏ¡£

O_CREATÈôÓû´ò¿ªµÄÎļþ²»´æÔÚÔò×Ô¶¯½¨Á¢¸ÃÎļþ¡£

O_EXCLÈç¹ûO_CREATÒ²±»ÉèÖ㬴ËÖ¸Áî»áÈ¥¼ì²éÎļþÊÇ·ñ´æÔÚ¡£ÎļþÈô²»´æÔÚÔò½¨Á¢¸ÃÎļþ£¬·ñÔò½«µ¼Ö´ò¿ªÎļþ´íÎó¡£´ËÍ⣬ÈôO_CREATÓëO_EXCLͬʱÉèÖ㬲¢ÇÒÓû´ò¿ªµÄÎļþΪ·ûºÅÁ¬½Ó£¬Ôò»á´ò¿ªÎļþʧ°Ü¡£

O_NOCTTYÈç¹ûÓû´ò¿ªµÄÎļþΪÖն˻úÉ豸ʱ£¬Ôò²»»á½«¸ÃÖն˻úµ±³É½ø³Ì¿ØÖÆÖն˻ú¡£

O_TRUNCÈôÎļþ´æÔÚ²¢ÇÒÒÔ¿ÉдµÄ·½Ê½´ò¿ªÊ±£¬´ËÆì±ê»áÁîÎļþ³¤¶ÈÇåΪ0£¬¶øÔÀ´´æÓÚ¸ÃÎļþµÄ×ÊÁÏÒ²»áÏûʧ¡£

O_APPENDµ±¶ÁдÎļþʱ»á´ÓÎļþβ¿ªÊ¼Òƶ¯£¬Ò²¾ÍÊÇËùдÈëµÄÊý¾Ý»áÒÔ¸½¼ÓµÄ·½Ê½¼ÓÈëµ½ÎļþºóÃæ¡£

O_NONBLOCKÒÔ²»¿É×è¶ÏµÄ·½Ê½´ò¿ªÎļþ£¬Ò²¾ÍÊÇÎÞÂÛÓÐÎÞÊý¾Ý¶ÁÈ¡»òµÈ´ý£¬¶¼»áÁ¢¼´·µ»Ø½ø³ÌÖ®ÖС£

O_NDELAYͬO_NONBLOCK¡£

O_SYNCÒÔͬ²½µÄ·½Ê½´ò¿ªÎļþ¡£

O_NOFOLLOWÈç¹û²ÎÊýpathnameËùÖ¸µÄÎļþΪһ·ûºÅÁ¬½Ó£¬Ôò»áÁî´ò¿ªÎļþʧ°Ü¡£

O_DIRECTORYÈç¹û²ÎÊýpathnameËùÖ¸µÄÎļþ²¢·ÇΪһĿ¼£¬Ôò»áÁî´ò¿ªÎļþʧ°Ü¡£

´ËΪLinux2.2ÒÔºóÌØÓеÄÆì±ê£¬ÒÔ±ÜÃâһЩϵͳ°²È«ÎÊÌâ¡£²ÎÊýmodeÔòÓÐÏÂÁÐÊýÖÖ×éºÏ£¬Ö»ÓÐÔÚ½¨Á¢ÐÂÎļþʱ²Å»áÉúЧ£¬´ËÍâÕæÕý½¨ÎļþʱµÄȨÏÞ»áÊܵ½umaskÖµËùÓ°Ï죬Òò´Ë¸ÃÎļþȨÏÞÓ¦¸ÃΪ£¨mode-umaks£©¡£

S_IRWXU£¬00700ȨÏÞ£¬´ú±í¸ÃÎļþËùÓÐÕß¾ßÓпɶÁ¡¢¿Éд¼°¿ÉÖ´ÐеÄȨÏÞ¡£

S_IRUSR»òS_IREAD£¬00400ȨÏÞ£¬´ú±í¸ÃÎļþËùÓÐÕß¾ßÓпɶÁÈ¡µÄȨÏÞ¡£

S_IWUSR»òS_IWRITE£¬00200ȨÏÞ£¬´ú±í¸ÃÎļþËùÓÐÕß¾ßÓпÉдÈëµÄȨÏÞ¡£

S_IXUSR»òS_IEXEC£¬00100ȨÏÞ£¬´ú±í¸ÃÎļþËùÓÐÕß¾ßÓпÉÖ´ÐеÄȨÏÞ¡£

S_IRWXG00070ȨÏÞ£¬´ú±í¸ÃÎļþÓû§×é¾ßÓпɶÁ¡¢¿Éд¼°¿ÉÖ´ÐеÄȨÏÞ¡£

S_IRGRP00040ȨÏÞ£¬´ú±í¸ÃÎļþÓû§×é¾ßÓпɶÁµÄȨÏÞ¡£

S_IWGRP00020ȨÏÞ£¬´ú±í¸ÃÎļþÓû§×é¾ßÓпÉдÈëµÄȨÏÞ¡£

S_IXGRP00010ȨÏÞ£¬´ú±í¸ÃÎļþÓû§×é¾ßÓпÉÖ´ÐеÄȨÏÞ¡£

S_IRWXO00007ȨÏÞ£¬´ú±íÆäËûÓû§¾ßÓпɶÁ¡¢¿Éд¼°¿ÉÖ´ÐеÄȨÏÞ¡£

S_IROTH00004ȨÏÞ£¬´ú±íÆäËûÓû§¾ßÓпɶÁµÄȨÏÞ

S_IWOTH00002ȨÏÞ£¬´ú±íÆäËûÓû§¾ßÓпÉдÈëµÄȨÏÞ¡£

S_IXOTH00001ȨÏÞ£¬´ú±íÆäËûÓû§¾ßÓпÉÖ´ÐеÄȨÏÞ¡£

·µ»ØÖµ

ÈôËùÓÐÓûºË²éµÄȨÏÞ¶¼Í¨¹ýÁ˼ì²éÔò·µ»Ø0Öµ£¬±íʾ³É¹¦£¬Ö»ÒªÓÐÒ»¸öȨÏÞ±»½ûÖ¹Ôò·µ»Ø-1¡£

´íÎó´úÂë

EEXIST²ÎÊýpathnameËùÖ¸µÄÎļþÒÑ´æÔÚ£¬È´Ê¹ÓÃÁËO_CREATºÍO_EXCLÆì±ê¡£

EACCESS²ÎÊýpathnameËùÖ¸µÄÎļþ²»·ûºÏËùÒªÇó²âÊÔµÄȨÏÞ¡£

EROFSÓû²âÊÔдÈëȨÏÞµÄÎļþ´æÔÚÓÚÖ»¶ÁÎļþϵͳÄÚ¡£

EFAULT²ÎÊýpathnameÖ¸Õ볬³ö¿É´æÈ¡ÄÚ´æ¿Õ¼ä¡£

EINVAL²ÎÊýmode²»ÕýÈ·¡£

ENAMETOOLONG²ÎÊýpathnameÌ«³¤¡£

ENOTDIR²ÎÊýpathname²»ÊÇĿ¼¡£

ENOMEMºËÐÄÄÚ´æ²»×ã¡£

ELOOP²ÎÊýpathnameÓйý¶à·ûºÅÁ¬½ÓÎÊÌâ¡£

EIOI/O´æÈ¡´íÎó¡£

¸½¼Ó˵Ã÷ʹÓÃaccess()×÷Óû§ÈÏÖ¤·½ÃæµÄÅжÏÒªÌرðСÐÄ£¬ÀýÈçÔÚaccess()ºóÔÙ×÷open()¿ÕÎļþ¿ÉÄÜ»áÔì³Éϵͳ°²È«ÉϵÄÎÊÌâ¡£

·¶Àý

#include

#include

#include

#include

main()

{

intfd,size;

chars[]=”LinuxProgrammer!

\n”,buffer[80];

fd=open(“/tmp/temp”,O_WRONLY|O_CREAT);

write(fd,s,sizeof(s));

close(fd);

fd=open(“/tmp/temp”,O_RDONLY);

size=read(fd,buffer,sizeof(buffer));

close(fd);

printf(“%s”,buffer);

}

Ö´ÐÐLinuxProgrammer!

read£¨ÓÉÒÑ´ò¿ªµÄÎļþ¶ÁÈ¡Êý¾Ý£©

Ïà¹Øº¯Êýreaddir£¬write£¬fcntl£¬close£¬lseek£¬readlink£¬fread

±íÍ·Îļþ#include

¶¨Ò庯Êý

ssize_tread(intfd,void*buf,size_tcount);

º¯Êý˵Ã÷read()»á°Ñ²ÎÊýfdËùÖ¸µÄÎļþ´«ËÍcount¸ö×Ö½Úµ½bufÖ¸ÕëËùÖ¸µÄÄÚ´æÖС£Èô²ÎÊýcountΪ0£¬Ôòread()²»»áÓÐ×÷Óò¢·µ»Ø0¡£·µ»ØֵΪʵ¼Ê¶ÁÈ¡µ½µÄ×Ö½ÚÊý£¬Èç¹û·µ»Ø0£¬±íʾÒѵ½´ïÎļþβ»òÊÇÎ޿ɶÁÈ¡µÄÊý¾Ý£¬´ËÍâÎļþ¶ÁдλÖûáËæ¶ÁÈ¡µ½µÄ×Ö½ÚÒƶ¯¡£

¸½¼Ó˵Ã÷Èç¹û˳Àûread()»á·µ»Øʵ¼Ê¶Áµ½µÄ×Ö½ÚÊý£¬×îºÃÄܽ«·µ»ØÖµÓë²ÎÊýcount×÷±È½Ï£¬Èô·µ»ØµÄ×Ö½ÚÊý±ÈÒªÇó¶ÁÈ¡µÄ×Ö½ÚÊýÉÙ£¬ÔòÓпÉÄܶÁµ½ÁËÎļþβ¡¢´Ó¹ÜµÀ(pipe)»òÖն˻ú¶ÁÈ¡£¬»òÕßÊÇread()±»ÐźÅÖжÏÁ˶ÁÈ¡¶¯×÷¡£µ±ÓдíÎó·¢ÉúʱÔò·µ»Ø-1£¬´íÎó´úÂë´æÈëerrnoÖУ¬¶øÎļþ¶ÁдλÖÃÔòÎÞ·¨Ô¤ÆÚ¡£

´íÎó´úÂëEINTR´Ëµ÷Óñ»ÐźÅËùÖжϡ£

EAGAINµ±Ê¹Óò»¿É×è¶ÏI/Oʱ£¨O_NONBLOCK£©£¬ÈôÎÞÊý¾Ý¿É¶ÁÈ¡Ôò·µ»Ø´ËÖµ¡£

EBADF²ÎÊýfd·ÇÓÐЧµÄÎļþÃèÊö´Ê£¬»ò¸ÃÎļþÒѹرա£

·¶Àý²Î¿¼open£¨£©¡£

write£¨½«Êý¾ÝдÈëÒÑ´ò¿ªµÄÎļþÄÚ£©

Ïà¹Øº¯Êýopen£¬read£¬fcntl£¬close£¬lseek£¬sync£¬fsync£¬fwrite

±íÍ·Îļþ#include

¶¨Ò庯Êý

ssize_twrite(intfd,constvoid*buf,size_tcount);

º¯Êý˵Ã÷write()»á°Ñ²ÎÊýbufËùÖ¸µÄÄÚ´æдÈëcount¸ö×Ö½Úµ½²ÎÊýfdËùÖ¸µÄÎļþÄÚ¡£µ±È»£¬Îļþ¶ÁдλÖÃÒ²»áËæÖ®Òƶ¯¡£

·µ»ØÖµÈç¹û˳Àûwrite()»á·µ»Øʵ¼ÊдÈëµÄ×Ö½ÚÊý¡£µ±ÓдíÎó·¢ÉúʱÔò·µ»Ø-1£¬´íÎó´úÂë´æÈëerrnoÖС£

´íÎó´úÂëEINTR´Ëµ÷Óñ»ÐźÅËùÖжϡ£

EAGAINµ±Ê¹Óò»¿É×è¶ÏI/Oʱ£¨O_NONBLOCK£©£¬ÈôÎÞÊý¾Ý¿É¶ÁÈ¡Ôò·µ»Ø´ËÖµ¡£

EADF²ÎÊýfd·ÇÓÐЧµÄÎļþÃèÊö´Ê£¬»ò¸ÃÎļþÒѹرա£

·¶ÀýÇë²Î¿¼open£¨£©¡£

 

sync£¨½«»º³åÇøÊý¾Ýд»Ø´ÅÅÌ£©

Ïà¹Øº¯Êýfsync

±íÍ·Îļþ#include

¶¨Ò庯Êýintsync(void)

º¯Êý˵Ã÷sync()¸ºÔð½«ÏµÍ³»º³åÇøÊý¾Ýд»Ø´ÅÅÌ£¬ÒÔÈ·±£Êý¾Ýͬ²½¡£

·µ»ØÖµ·µ»Ø0¡£

fopen£¨´ò¿ªÎļþ£©

Ïà¹Øº¯Êý

open£¬fclose

±íÍ·Îļþ

#include

¶¨Ò庯Êý

FILE*fopen(constchar*path,constchar*mode);

º¯Êý˵Ã÷

²ÎÊýpath×Ö·û´®°üº¬Óû´ò¿ªµÄÎļþ·¾¶¼°ÎļþÃû£¬²ÎÊýmode×Ö·û´®Ôò´ú±í×ÅÁ÷ÐÎ̬¡£

modeÓÐÏÂÁм¸ÖÖÐÎ̬×Ö·û´®:

r´ò¿ªÖ»¶ÁÎļþ£¬¸ÃÎļþ±ØÐë´æÔÚ¡£

r+´ò¿ª¿É¶ÁдµÄÎļþ£¬¸ÃÎļþ±ØÐë´æÔÚ¡£

w´ò¿ªÖ»Ð´Îļþ£¬ÈôÎļþ´æÔÚÔòÎļþ³¤¶ÈÇåΪ0£¬¼´¸ÃÎļþÄÚÈÝ»áÏûʧ¡£ÈôÎļþ²»´æÔÚÔò½¨Á¢¸ÃÎļþ¡£

w+´ò¿ª¿É¶ÁдÎļþ£¬ÈôÎļþ´æÔÚÔòÎļþ³¤¶ÈÇåΪÁ㣬¼´¸ÃÎļþÄÚÈÝ»áÏûʧ¡£ÈôÎļþ²»´æÔÚÔò½¨Á¢¸ÃÎļþ¡£

aÒÔ¸½¼ÓµÄ·½Ê½´ò¿ªÖ»Ð´Îļþ¡£ÈôÎļþ²»´æÔÚ£¬Ôò»á½¨Á¢¸ÃÎļþ£¬Èç¹ûÎļþ´æÔÚ£¬Ð´ÈëµÄÊý¾Ý»á±»¼Óµ½Îļþ⣬¼´ÎļþÔÏȵÄÄÚÈݻᱻ±£Áô¡£

a+ÒÔ¸½¼Ó·½Ê½´ò¿ª¿É¶ÁдµÄÎļþ¡£ÈôÎļþ²»´æÔÚ£¬Ôò»á½¨Á¢¸ÃÎļþ£¬Èç¹ûÎļþ´æÔÚ£¬Ð´ÈëµÄÊý¾Ý»á±»¼Óµ½Îļþβºó£¬¼´ÎļþÔÏȵÄÄÚÈݻᱻ±£Áô¡£

ÉÏÊöµÄÐÎ̬×Ö·û´®¶¼¿ÉÒÔÔÙ¼ÓÒ»¸öb×Ö·û£¬Èçrb¡¢w+b»òab£«µÈ×éºÏ£¬¼ÓÈëb×Ö·ûÓÃÀ´¸æËߺ¯Êý¿â´ò¿ªµÄÎļþΪ¶þ½øÖÆÎļþ£¬¶ø·Ç´¿ÎÄ×ÖÎļþ¡£²»¹ýÔÚPOSIXϵͳ£¬°üº¬Linux¶¼»áºöÂÔ¸Ã×Ö·û¡£ÓÉfopen()Ëù½¨Á¢µÄÐÂÎļþ»á¾ßÓÐS_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)ȨÏÞ£¬´ËÎļþȨÏÞÒ²»á²Î¿¼umaskÖµ¡£

·µ»ØÖµ

Îļþ˳Àû´ò¿ªºó£¬Ö¸Ïò¸ÃÁ÷µÄÎļþÖ¸Õë¾Í»á±»·µ»Ø¡£Èô¹ûÎļþ´ò¿ªÊ§°ÜÔò·µ»ØNULL£¬²¢°Ñ´íÎó´úÂë´æÔÚerrnoÖС£

¸½¼Ó˵Ã÷

Ò»°ã¶øÑÔ£¬´ò¿ªÎļþºó»á×÷һЩÎļþ¶ÁÈ¡»òдÈëµÄ¶¯×÷£¬Èô¿ªÎļþʧ°Ü£¬½ÓÏÂÀ´µÄ¶Áд¶¯×÷Ò²ÎÞ·¨Ë³Àû½øÐУ¬ËùÒÔÔÚfopen()ºóÇë×÷´íÎóÅжϼ°´¦Àí¡£

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1