Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

linux 0.11 ÄÚºËѧϰ read_write.c


/*
 * ¸ÃÎļþʵÏÖϵͳµ÷ÓÃread£¬writeºÍlseek¡£
 */
/*
 *  linux/fs/read_write.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <sys/stat.h>
#include <errno.h>
#include <sys/types.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/segment.h>
/* ×Ö·ûÉ豸¶Áдº¯Êý */
extern int rw_char(int rw,int dev, char * buf, int count, off_t * pos);
/* ¶Á¹ÜµÀ²Ù×÷º¯Êý */
extern int read_pipe(struct m_inode * inode, char * buf, int count);
/* д¹ÜµÀ²Ù×÷º¯Êý */
extern int write_pipe(struct m_inode * inode, char * buf, int count);
/* ¿éÉ豸¶Á²Ù×÷º¯Êý */
extern int block_read(int dev, off_t * pos, char * buf, int count);
/* ¿éÉ豸д²Ù×÷º¯Êý */
extern int block_write(int dev, off_t * pos, char * buf, int count);
/* ¶ÁÎļþ²Ù×÷º¯Êý */
extern int file_read(struct m_inode * inode, struct file * filp,
char * buf, int count);
/* дÎļþ²Ù×÷º¯Êý */
extern int file_write(struct m_inode * inode, struct file * filp,
char * buf, int count);
/* ÖØ¶¨Î»Îļþ¶ÁдָÕëϵͳµ÷Óú¯Êý£¬²ÎÊýfdÊÇÎļþ¾ä±ú£¬offsetÊÇеÄÎļþ */
/* ¶ÁÐ´Æ«ÒÆÁ¿£¬originÊÇÆ«ÒÆµÄÆðʼµØÖ·£¬¿ÉÄÜÊÇÏÂÃæµÄÈý¸öÖµ£ºSEEK_SET   */
/* ÎļþµÄ¿ªÊ¼´¦£¬SEEK_CURµ±Ç°µÄ¶ÁдλÖã¬SEEK_ENDÎļþ½áβ´¦           */
int sys_lseek(unsigned int fd,off_t offset, int origin)
{
struct file * file;
int tmp;
// Èç¹ûÎļþ¾ä±úÖµ´óÓÚ³ÌÐò×î¶à´ò¿ªÎļþÊýNR_OPEN(20)£¬»òÕ߸þä±úµÄÎļþ½á¹¹Ö¸ÕëΪ¿Õ£¬»òÕß
// ¶ÔÓ¦Îļþ½á¹¹µÄi ½Úµã×Ö¶ÎΪ¿Õ£¬»òÕßÖ¸¶¨É豸ÎļþÖ¸ÕëÊDz»¿É¶¨Î»µÄ£¬Ôò·µ»Ø³ö´íÂë²¢Í˳ö
if (fd >= NR_OPEN || !(file=current->filp[fd]) || !(file->f_inode)
  || !IS_SEEKABLE(MAJOR(file->f_inode->i_dev)))
return -EBADF;
// Èç¹ûÎļþ¶ÔÓ¦µÄi ½ÚµãÊǹܵÀ½Úµã£¬Ôò·µ»Ø³ö´íÂ룬Í˳ö
if (file->f_inode->i_pipe)
return -ESPIPE;
switch (origin) {
case 0: // SEEK_SET
// ÈôÆ«ÒÆÖµÐ¡ÓÚÁ㣬Ôò³ö´í
if (offset<0) return -EINVAL;
// ÉèÖÃÎļþ¶ÁдָÕëµÈÓÚoffset
file->f_


Ïà¹ØÎĵµ£º

¡¶LINUXÉ豸Çý¶¯³ÌÐò¡·Ñ§Ï°Ôý¼Ç£¨¶þ£©

×ܽáÕ½ڣºµÚÈý½Ú ×Ö·ûÉ豸Çý¶¯
ÕâÒ»ÕÂÖ÷ÒªÊǽ²Ò»Ð©×Ö·ûÉ豸Çý¶¯³ÌÐòµÄÏà¹ØÖªÊ¶¡£ÔÚ½øÐÐ×Ö·ûÉ豸Çý¶¯³ÌÐòѧϰ֮ǰ£¬ÎÒÃDZØÐëµÃŪÃ÷°×Ò»¸öÎÊÌ⣺Çý¶¯³ÌÐòʱ¸øË­Óõġ£
ºÜ¶àÇý¶¯³ÌÐòµÄ³õѧÕߣ¬°´ÕÕÒ»°ã±à³ÌÓïÑÔ£¨C£¬javaµÈµÈ£©±àдӦÓóÌÐòµÄ¾­Ñ飬º¯Êý¾ÍÊÇÓÃÀ´µ÷Óõġ£ÕâÖÖµ÷ÓùØÏµ£¬ÔÚÓ¦ÓÿռäÀ´¿´£¬ÏÞÖÆ²»ÊǺÜÃ÷ÏÔ¡£ºÜ¶à ......

Linux erron³£Á¿

#define EPERM            1      /* Operation not permitted */
#define ENOENT           2      /* No such file or directory */
#define ESRCH&nbs ......

¡¶LINUXÉ豸Çý¶¯³ÌÐò¡·Ñ§Ï°Ôý¼Ç£¨Ò»£©

×ܽáÕ½ڣºµÚÒ»Õ É豸Çý¶¯³ÌÐò¼ò½é
          µÚ¶þÕ ¹¹ÔìºÍÔËÐÐÄ£¿é
Ìáµ½Çý¶¯³ÌÐò¾Í²»µÃ²»ÏÈ˵ÏÂÁ½¸öÃû´Ê£ºÄں˿ռäºÍÓû§¿Õ¼ä¡£Óû§¿Õ¼ä¼´Óû§Ó¦ÓÃËùÔËÐеĿռ䣬Äں˿ռäÖµµÃÊDzÙ×÷ϵͳÄÚºËÔËÐеĿռ䡣Óû§¿Õ¼ä²»ÄÜÖ±½ÓÒýÓûòÕß²Ù×÷Äں˿ռäµÄÊý¾Ý£¬Äں˿ռäÒ²²»ÄÜÖ±½ ......

Linux ÏûÏ¢ÖØ¶¨Ïò°ì·¨

Linux ÏûÏ¢ÖØ¶¨Ïò°ì·¨
command > filename
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸öÖ¸¶¨ÎļþÖÐ
command 1 > fielname
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸öÖ¸¶¨ÎļþÖÐ(ͬÉÏ)
command 2 > filename
°Ñ±ê×¼´íÎóÖØ¶¨Ïòµ½Ò»¸öÎļþÖÐ
command >! filename
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸ö
Ö¸¶¨
ÎļþÖУ¬ÈôÎļþ´æÔÚ£¬Ôò¸²¸Ç
command >&am ......

linux 0.11 ÄÚºËѧϰ truncate.c


/*
 * ¸ÃÎļþÖ÷ҪʵÏÖµÄÊÇtruncateº¯Êý£¬¸Ãº¯ÊýÊÇÊÍ·ÅÖ¸¶¨i 
 * ½ÚµãÔÚÉ豸ÉÏÕ¼ÓõÄËùÓÐÂß¼­¿é£¬°üÀ¨Ö±½Ó¿é¡¢Ò»´Î¼ä
 * ½Ó¿éºÍ¶þ´Î¼ä½Ó¿é
 */
/*
 *  linux/fs/truncate.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <linux/sched.h>
......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ