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

linux 0.11 ÄÚºËѧϰ pipe.c


/*
 * ¸ÃÎļþÖеÄÁ½¸öº¯Êýread_pipeºÍwrite_pipeÊÇÉϲ㺯Êý
 * readºÍwriteµÄµ×²ãʵÏÖ
 */
/*
 *  linux/fs/pipe.c
 *
 *  (C) 1991  Linus Torvalds
 */
#include <signal.h>
#include <linux/sched.h>
// ÄÚ´æ¹ÜÀíÍ·Îļþ¡£º¬ÓÐÒ³Ãæ´óС¶¨ÒåºÍһЩҳÃæÊͷź¯ÊýÔ­ÐÍ
#include <linux/mm.h> /* for get_free_page */
#include <asm/segment.h>
/* pipeÀàËÆÓÚ¶ÓÁУ¬ÏòpipeµÄβ²¿Ð´ÈëÊý¾Ý£¬´ÓpipeµÄÍ·²¿¶ÁÈ¡Êý¾Ý    */
/* ¹ÜµÀ¶Á²Ù×÷º¯Êý    */
/* ²ÎÊýinode ÊǹܵÀ¶ÔÓ¦µÄi ½Úµã£¬buf ÊÇÊý¾Ý»º³åÇøÖ¸Õ룬count ÊǶÁÈ¡µÄ×Ö½ÚÊý */
/*
 * read_pipe()º¯ÊýÓÃÓÚ¶ÁÈ¡¹ÜµÀÖеÄÊý¾Ý£¬Èç¹û¹ÜµÀÖÐûÓÐÊý¾ÝµÄ»°£¬
 * »½ÐÑд¹ÜµÀ½ø³Ì£¬×Ô¼ºË¯Ãߣ¬Èç¹û¶Áµ½Êý¾Ý£¬²¢°ÑÊý¾Ý´«µ½Óû§»º³åÇø£¬
 * µ±°Ñ¹ÜµÀÖÐËùÓеÄÊý¾Ý¶¼È¡×ߺó£¬Ò²Òª»½Ðѵȴýд¹ÜµÀµÄ½ø³Ì£¬²¢·µ»Ø
 * ÒѶÁÊý¾Ý×Ö½ÚÊý
 */
int read_pipe(struct m_inode * inode, char * buf, int count)
{
int chars, size, read = 0;
while (count>0) 
{
// Èôµ±Ç°¹ÜµÀÖÐûÓÐÊý¾Ý(size=0)£¬Ôò»½Ðѵȴý¸Ã½ÚµãµÄ½ø³Ì
while (!(size=PIPE_SIZE(*inode)))
{
wake_up(&inode->i_wait);
// Èç¹ûÒÑûÓÐд¹ÜµÀÕß
if (inode->i_count != 2) /* are there any writers? */
return read; // ·µ»ØÒѶÁ×Ö½ÚÊý
// ·ñÔòÔÚ¸Ãi ½ÚµãÉÏ˯Ãߣ¬µÈ´ýÐÅÏ¢
sleep_on(&inode->i_wait);
}
// È¡¹ÜµÀβµ½»º³åÇøÄ©¶ËµÄ×Ö½ÚÊýchars
chars = PAGE_SIZE-PIPE_TAIL(*inode);
if (chars > count)
chars = count;
if (chars > size)
chars = size;
// ¶Á×Ö½Ú¼ÆÊý¼õÈ¥´Ë´Î¿É¶ÁµÄ×Ö½ÚÊýchars£¬²¢ÀÛ¼ÓÒѶÁ×Ö½ÚÊý
count -= chars;
read += chars;
// Áîsize Ö¸Ïò¹ÜµÀβ²¿£¬µ÷Õûµ±Ç°¹ÜµÀβָÕ루ǰÒÆchars ×Ö½Ú£©
size = PIPE_TAIL(*inode);
PIPE_TAIL(*inode) += chars;
PIPE_TAIL(*inode) &= (PAGE_SIZE-1);
// ½«¹ÜµÀÖеÄÊý¾Ý¸´ÖƵ½Óû§»º³åÇøÖÐ
while (chars-->0)
put_fs_byte(((char *)inode->i_size)[size++],buf++);
}
// »½Ðѵȴý¸Ã¹ÜµÀi ½ÚµãµÄ½ø³Ì
wake_up(&inode->i_wait);

// ·µ»Ø¶ÁÈ¡µÄ×Ö½ÚÊý
return read;


Ïà¹ØÎĵµ£º

ÕÆÎÕ Linux ѧϰ·½·¨ ѧºÃLinux

Èç¹ûÄã°®ºÃѧϰ֪ʶ£¬ÓÈÆäÊÇLinux²Ù×÷ϵͳ֪ʶ£¬Ëæ×ÅLinuxÓ¦ÓõÄÀ©Õ¹£¬Ðí¶àÅóÓÑ¿ªÊ¼½Ó´¥Linux£¬¿ÉÄã²»ÖªµÀÈ¥ÄÄÀïÕÒµ½ÕâЩ֪ʶ£¬À´ÕâÀÈÃÄã¸ü¼ÓÁ˽âLinuxѧϰ·½·¨¡£ÈÃÄãÈ«ÃæÕÆÎÕLinuxѧϰ·½·¨¡£
1£®Ñ§Ï°µÄÄ¿µÄ
¡¡¡¡Í¨¹ýLinuxµÄѧϰÕÆÎÕUNIXµÄÄ¿µÄÏë±Ø²»Óöà˵ÁË£¬ÔÚÕâ¸öÍøÂçÈ˲ÅÉí¼Û±¶ÔöµÄÄê´ú£¬Ïë¿¿¼¼Êõ³Ô·¹ÓÖ²»ÏëÕÆÎÕÍ ......

linuxÃüÁîµÄÈ«³Æ~~~·

תÔØ×Ô£ºhttp://www.91linux.com/html/article/go/20090205/15634.html
bin = BINaries £¨binary)
/dev = devices
/etc = ETCetera
etcetera¸½¼ÓµÄÈË, ¸½¼ÓÎï, ÒÔ¼°ÆäËü, µÈµÈ
/lib = LIBrary
/proc = PROCesses
/sbin
= Superuser BINaries
/tmp = TeMPorary
/usr = Unix Shared
Resources
/var = ......

linuxÏß³Ìͬ²½Ö®Ìõ¼þ±äÁ¿

    Ìõ¼þ±äÁ¿Í¨¹ýÔÊÐíÏß³Ì×èÈûºÍµÈ´ýÁíÒ»¸öÏ̷߳¢ËÍÐźŵķ½·¨ÃÖ²¹ÁË»¥³âËøµÄ²»×㣬Ëü³£ºÍ»¥³âËøÒ»ÆðʹÓá£Ê¹ÓÃʱ£¬Ìõ¼þ±äÁ¿±»ÓÃÀ´×èÈûÒ»¸öỊ̈߳¬µ±Ìõ¼þ²»Âú×ãʱ£¬Ïß³ÌÍùÍù½â¿ªÏàÓ¦µÄ»¥³âËø²¢µÈ´ýÌõ¼þ·¢Éú±ä»¯¡£Ò»µ©ÆäËüµÄij¸öÏ̸߳ıäÁËÌõ¼þ±äÁ¿£¬Ëü½«Í¨ÖªÏàÓ¦µÄÌõ¼þ±äÁ¿»½ÐÑÒ»¸ö»ò¶à¸öÕý±»´ËÌõ¼þ±äÁ¿×èÈûµ ......

Linuxϳ£ÓÃCÓïÑÔ×Ö·û´®²Ù×÷º¯Êý

stroul£¬
strdup
snprintf()
atio
 
CÖг£ÓÃ×Ö·û´®²Ù×÷º¯Êý
#include <string.h>
 
size_t strlen(const char *s)   ²âÁ¿×Ö·û´®³¤¶ÈsµÄʵ¼Ê³¤¶È¡£
ÀýÈçs[20]="abc",ÄÇôstrlen(s)µÄ½á¹ûÊÇ3£¬¶ø²»ÊÇ20.Õâ¾ÍÊÇʵ¼Ê³¤¶È
 
char *strcat(const char *s1, const *s2)  ......

Linux ÄÚºËÅäÖÃ

LinuxÄÚºËÅäÖð취£º
1. make config
ÕâÖÖ°ì·¨»á±éÀúËùÓÐÅäÖÃÏҪÇóÓû§Öð¸öÑ¡ÔñY/N/M
2. make menuconfig
Õâ¸ö°ì·¨ÊÇ»ùÓÚncurse¿â±àÖƵÄͼÐνçÃ湤¾ß¡£³£ÓÃ
3. make xconfig
ÓÃÓÚ»ùÓÚX11µÄͼÐι¤¾ß
4. make gconfig
ÓÃÓÚ»ùÓÚgtk+ͼÐι¤¾ß
5. make defconfig
´´½¨Ò»¸öĬÈϵÄÅäÖã¬Éú³Éµ±Ç°µÄ.config
6. make x ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ