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

linux 0.11 ÄÚºËѧϰ truncate.c


/*
 * ¸ÃÎļþÖ÷ҪʵÏÖµÄÊÇtruncateº¯Êý£¬¸Ãº¯ÊýÊÇÊÍ·ÅÖ¸¶¨i 
 * ½ÚµãÔÚÉ豸ÉÏÕ¼ÓõÄËùÓÐÂß¼­¿é£¬°üÀ¨Ö±½Ó¿é¡¢Ò»´Î¼ä
 * ½Ó¿éºÍ¶þ´Î¼ä½Ó¿é
 */
/*
 *  linux/fs/truncate.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <linux/sched.h>
#include <sys/stat.h>
/* ÊÍ·ÅÒ»´Î¼ä½Ó¿é£¬²ÎÊýint dev, int blockÖ¸Ã÷Ò»´Î¼ä½Ó¿éµÄÉ豸ºÅ */
static void free_ind(int dev,int block)
{
struct buffer_head * bh;
unsigned short * p;
int i;
// Èç¹ûÂß¼­¿éºÅΪ0£¬Ôò·µ»Ø
if (!block)
return;
// ¶Áȡһ´Î¼ä½Ó¿é£¬²¢ÊÍ·ÅÆäÉϱíÃ÷ʹÓõÄËùÓÐÂß¼­
// ¿é£¬È»ºóÊͷŸÃÒ»´Î¼ä½Ó¿éµÄ»º³åÇø
if (bh=bread(dev,block)) {
p = (unsigned short *) bh->b_data;
for (i=0;i<512;i++,p++)
if (*p)
free_block(dev,*p);
brelse(bh);
}
free_block(dev,block);
}
/* ÊͷŶþ´Î¼ä½Ó¿é£¬int dev, int blockÖ¸Ã÷¶þ´Î¼ä½Ó¿éµÄÂß¼­ºÅ */
static void free_dind(int dev,int block)
{
struct buffer_head * bh;
unsigned short * p;
int i;
if (!block)
return;
if (bh=bread(dev,block)) 
{
p = (unsigned short *) bh->b_data;
for (i=0;i<512;i++,p++)
if (*p)
free_ind(dev,*p);
brelse(bh);
}
free_block(dev,block);
}
/* ½«½Úµã¶ÔÓ¦µÄÎļþ³¤¶È½ØÎª0£¬²¢ÊÍ·ÅÕ¼ÓõÄÉ豸¿Õ¼ä */
void truncate(struct m_inode * inode)
{
int i;
// Èç¹û²»Êdz£¹æÎļþ»òÕßÊÇĿ¼Îļþ£¬Ôò·µ»Ø
if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
return;
// ÊÍ·Åi ½ÚµãµÄ7 ¸öÖ±½ÓÂß¼­¿é£¬²¢½«Õâ7 ¸öÂß¼­¿éÏîÈ«ÖÃÁã
/*********************Ö±½Ó¿é************************/
for (i=0;i<7;i++)
if (inode->i_zone[i]) {
free_block(inode->i_dev,inode->i_zone[i]);
inode->i_zone[i]=0;
}
/*************************************************/
// ÊÍ·ÅÒ»´Î¼ä½Ó¿é
free_ind(inode->i_dev,inode->i_zone[7]);
// ÊͷŶþ´Î¼ä½Ó¿é
free_dind(inode->i_dev,inode->i_zone[8]);
// Âß¼­¿éÏî7¡¢8 ÖÃÁã
inode->i_zone[7] = inode->i_zone[8] = 0;
// Îļþ´óСÖÃÁã
inode->i_size = 0;
// ÖýÚ


Ïà¹ØÎĵµ£º

linux·Ç×èÈûsocket½Ì³Ì

        ±¾ÎIJ¢·Ç½âÊÍʲôÊÇ·Ç×èÈûsocket£¬Ò²²»ÊǽéÉÜsocket APIµÄÓ÷¨£¬ È¡¶ø´úÌæµÄÊÇÈÃÄã¸ÐÊÜʵ¼Ê¹¤×÷ÖеĴúÂë±àд¡£ËäÈ»ºÜ¼òª£¬µ«Äã¿ÉÒÔͨ¹ýmanÊÖ²áÓëÆäËü×ÊÔ´·Ç¸»ÄãµÄ´úÂë¡£Çë×¢Òâ±¾½Ì³ÌËù˵µÄÖ÷Ì⣬Èç¹ûϸ˵£¬ÄÚÈÝ¿ÉÒÔ´ïµ½Ò»±¾ÊéÄÚÈÝ£¬Äã»á·¢ÏÖ±¾½Ì³ÌºÜÓÐÓá£
±¾½Ì³ÌÄÚÈÝÈçÏ£º ......

Linux ³£¼ûÎļþÀàÐÍ 02/07/10

ѹËõºÍ´ò°üÎļþ
¡¡¡¡* .bz2 — ʹÓÃbzip2ÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃbzip2 -d filename ½â°ü
¡¡¡¡* .gz — ʹÓÃgzipÃüÁîѹËõµÄÎļþ£¬¿ÉÒÔʹÓÃgunzip -d filename ½â°ü
¡¡¡¡* .tar — ʹÓÃtar´ò°üµÄÎļþ£¬¼´tarballÎļþ£¬¿ÉÒÔʹÓÃtar xf filename ½â°ü
¡¡¡¡* .tbz — ʹÓÃtar´òÍê°üºóÔÙÒÔbzip2ÃüÁ ......

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

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

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

Linux ÏûÏ¢ÖØ¶¨Ïò°ì·¨
command > filename
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸öÖ¸¶¨ÎļþÖÐ
command 1 > fielname
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸öÖ¸¶¨ÎļþÖÐ(ͬÉÏ)
command 2 > filename
°Ñ±ê×¼´íÎóÖØ¶¨Ïòµ½Ò»¸öÎļþÖÐ
command >! filename
°Ñ±ê×¼Êä³öÖØ¶¨Ïòµ½Ò»¸ö
Ö¸¶¨
ÎļþÖУ¬ÈôÎļþ´æÔÚ£¬Ôò¸²¸Ç
command >&am ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ