ºìÁªLinuxÃÅ»§
Linux°ïÖú

ÔÚLinux²Ù×÷ϵͳÖбà³ÌÉùÒôÉ豸ʵÀý

·¢²¼Ê±¼ä:2006-11-21 09:38:06À´Ô´:ºìÁª×÷Õß:flycocoon
¡¡¡¡LinuxϵÄÉùÒôÉ豸±à³Ì±È´ó¶àÊýÈËÏëÏóµÄÒª¼òµ¥µÃ¶à¡£Ò»°ã˵À´£¬ÎÒÃdz£ÓõÄÉùÒôÉ豸ÊÇÄÚ²¿ÑïÉùÆ÷ºÍÉù¿¨£¬ËüÃǶ¼¶ÔÓ¦/devĿ¼ÏµÄÒ»¸ö»ò¶à¸öÉ豸Îļþ£¬ÎÒÃÇÏó´ò¿ªÆÕͨÎļþÒ»Ñù´ò¿ªËüÃÇ£¬ÓÃioctl£¨£©º¯ÊýÉèÖÃһЩ²ÎÊý£¬È»ºó¶ÔÕâЩ´ò¿ªµÄÌØÊâÎļþ½øÐ´²Ù×÷¡£

¡¡¡¡ÓÉÓÚÕâЩÎļþ²»ÊÇÆÕͨµÄÎļþ£¬ËùÒÔÎÒÃDz»ÄÜÓÃANSI C£¨±ê×¼C£©µÄfopen¡¢fcloseµÈÀ´²Ù×÷Îļþ£¬¶øÓ¦¸ÃʹÓÃϵͳÎļþI/O´¦Àíº¯Êý£¨open¡¢read¡¢write¡¢lseekºÍclose£©À´´¦ÀíÕâЩÉ豸Îļþ¡£ioctl£¨£©»òÐíÊÇLinuxÏÂ×îÅÓÔӵĺ¯Êý£¬Ëü¿ÉÒÔ¿ØÖƸ÷ÖÖÎļþµÄÊôÐÔ£¬ÔÚLinuxÉùÒôÉ豸±à³ÌÖУ¬×îÖØÒªµÄ¾ÍÊÇʹÓô˺¯ÊýÕýÈ·ÉèÖñØÒªµÄ²ÎÊý¡£

¡¡¡¡ÏÂÃæÎÒÃǾÙÁ½¸öʵ¼ÊµÄÀý×ÓÀ´ËµÃ÷ÈçºÎʵÏÖLinuxϵÄÉùÒô±à³Ì¡£ÓÉÓÚ´ËÀà±à³ÌÉæ¼°µ½ÏµÍ³É豸µÄ¶Áд£¬ËùÒÔ£¬ºÜ¶àʱºòÐèÒªÄãÓÐrootȨÏÞ£¬Èç¹ûÄ㽫ÏÂÃæµÄÀý×Ó±àÒëºó²»ÄÜÕýÈ·Ö´ÐУ¬ÄÇô£¬Ê×ÏÈÇëÄã¼ì²éÊÇ·ñÊÇÒòΪûÓвÙ×Ýij¸öÉ豸µÄȨÏÞ¡£

¡¡¡¡¶ÔÄÚ²¿ÑïÉùÆ÷±à³ÌÄÚ²¿ÑïÉùÆ÷ÊÇ¿ØÖÆÌ¨µÄÒ»²¿·Ö£¬ËùÒÔËü¶ÔÓ¦µÄÉ豸ÎļþΪ/dev/console¡£±äÁ¿KIOCSOUNDÔÚÍ·Îļþ /usr /include /linux /kd.hÖÐÉùÃ÷£¬ioctlº¯ÊýʹÓÃËü¿ÉÒÔÀ´¿ØÖÆÑïÉùÆ÷µÄ·¢Éù£¬Ê¹ÓùæÔòΪ£º

ÒýÓÃ:
¡¡¡¡ioctl ( fd, KIOCSOUND, (int) tone);


¡¡¡¡fdΪÎļþÉ豸ºÅ£¬tone ÊÇÒôƵֵ¡£µ±toneΪ0ʱ£¬ÖÕÖ¹·¢Éù¡£±ØÐëÒ»ÌáµÄÊÇËüËùÀí½âµÄÒôƵºÍÎÒÃÇÆ½³£ÒÔΪµÄÒôƵÊDz»Í¬µÄ£¬ÓÉÓÚ¼ÆËã»úÖ÷°å¶¨Ê±Æ÷µÄʱÖÓÆµÂÊΪ1.19MHZ£¬ËùÒÔÒª½øÐÐÕýÈ·µÄ·¢Éù£¬±ØÐë½øÐÐÈçϵÄת»»£ºÑïÉùÆ÷ÒôƵֵ=1190000/ÎÒÃÇÆÚÍûµÄÒôƵֵ¡£

¡¡¡¡ÑïÉùÆ÷·¢Éùʱ¼äµÄ³¤¶ÌÎÒÃÇͨ¹ýº¯Êýusleep£¨unsigned long usec£©À´¿ØÖÆ¡£ËüÊÇÔÚÍ·Îļþ/usr /include /unistd.hÖж¨ÒåµÄ£¬ÈóÌÐò˯Ãßusec΢Ãë¡£ÏÂÃæ¼´ÊÇÈÃÑïÉùÆ÷°´Ö¸¶¨µÄ³¤¶ÈºÍÒôƵ·¢ÉùµÄ³ÌÐòµÄÍêÕûÇåµ¥£º

ÒýÓÃ:
#include < fcntl.h >
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
#include < unistd.h >
#include < sys/ioctl.h >
#include < sys/types.h >
#include < linux/kd.h >

/* É趨ĬÈÏÖµ */
#define DEFAULT_FREQ 440 /* É趨һ¸öºÏÊÊµÄÆµÂÊ */
#define DEFAULT_LENGTH 200 /* 200 ΢Ã룬·¢ÉùµÄ³¤¶ÈÊÇÒÔ΢ÃëΪµ¥Î»µÄ*/
#define DEFAULT_REPS 1 /* ĬÈϲ»Öظ´·¢Éù */
#define DEFAULT_DELAY 100 /* ͬÑùÒÔ΢ÃëΪµ¥Î»*/

/* ¶¨ÒåÒ»¸ö½á¹¹£¬´æ´¢ËùÐèµÄÊý¾Ý*/
typedef struct {
int freq; /* ÎÒÃÇÆÚÍûÊä³öµÄƵÂÊ£¬µ¥Î»ÎªHz */
int length; /* ·¢Éù³¤¶È£¬ÒÔ΢ÃëΪµ¥Î»*/
int reps; /* ÖØ¸´µÄ´ÎÊý*/
int delay; /* Á½´Î·¢Éù¼ä¸ô£¬ÒÔ΢ÃëΪµ¥Î»*/
} beep_parms_t;


/* ´òÓ¡°ïÖúÐÅÏ¢²¢Í˳ö*/
void usage_bail ( const char *executable_name ) {
printf ( "Usage: \n \t%s [-f frequency] [-l length] [-r reps] [-d delay] \n ",
executable_name );
exit(1);
}

/ * ·ÖÎöÔËÐвÎÊý£¬¸÷ÏîÒâÒåÈçÏ£º
* "-f <ÒÔHZΪµ¥Î»µÄƵÂÊÖµ >"
* "-l <ÒÔºÁÃëΪµ¥Î»µÄ·¢Éùʱ³¤ >"
* "-r <ÖØ¸´´ÎÊý >"
* "-d <ÒÔºÁÃëΪµ¥Î»µÄ¼äЪʱ³¤ >"
*/
void parse_command_line(char **argv, beep_parms_t *result) {
char *arg0 = *(argv++);
while ( *argv ) {
if ( !strcmp( *argv,"-f" )) { /*ƵÂÊ*/
int freq = atoi ( *( ++argv ) );
if ( ( freq <= 0 ) | | ( freq > 10000 ) ) {
fprintf ( stderr, "Bad parameter: frequency must be from 1..10000\n" );
exit (1) ;
} else {
result->freq = freq;
argv++;
}
} else if ( ! strcmp ( *argv, "-l" ) ) { /*ʱ³¤*/
int length = atoi ( *(++argv ) );
if (length < 0) {
fprintf(stderr, "Bad parameter: length must be >= 0\n");
exit(1);
} else {
result->length = length;
argv++;
}
} else if (!strcmp(*argv, "-r")) { /*ÖØ¸´´ÎÊý*/
int reps = atoi(*(++argv));
if (reps < 0) {
fprintf(stderr, "Bad parameter: reps must be >= 0\n");
exit(1);
} else {
result->reps = reps;
argv++;
}
} else if (!strcmp(*argv, "-d")) { /* ÑÓʱ */
int delay = atoi(*(++argv));
if (delay < 0) {
fprintf(stderr, "Bad parameter: delay must be >= 0\n");
exit(1);
} else {
result->delay = delay;
argv++;
}
} else {
fprintf(stderr, "Bad parameter: %s\n", *argv);
usage_bail(arg0);
}
}
}

int main(int argc, char **argv) {
int console_fd;
int i; /* Ñ­»·¼ÆÊýÆ÷ */
/* Éè·¢Éù²ÎÊýΪĬÈÏÖµ*/
beep_parms_t parms = {DEFAULT_FREQ, DEFAULT_LENGTH, DEFAULT_REPS,
DEFAULT_DELAY};
/* ·ÖÎö²ÎÊý£¬¿ÉÄܵϰ¸üз¢Éù²ÎÊý*/
parse_command_line(argv, &parms);

/* ´ò¿ª¿ØÖÆÌ¨£¬Ê§°ÜÔò½áÊø³ÌÐò*/
if ( ( console_fd = open ( "/dev/console", O_WRONLY ) ) == -1 ) {
fprintf(stderr, "Failed to open console.\n");
perror("open");
exit(1);
}

/* ÕæÕý¿ªÊ¼ÈÃÑïÉùÆ÷·¢Éù*/
for (i = 0; i < parms.reps; i++) {
/* Êý×Ö1190000´ÓºÎ¶øÀ´£¬²»µÃ¶øÖª*/
int magical_fairy_number = 1190000/parms.freq;

ioctl(console_fd, KIOCSOUND, magical_fairy_number); /* ¿ªÊ¼·¢Éù */
usleep(1000*parms.length); /*µÈ´ý... */
ioctl(console_fd, KIOCSOUND, 0); /* Í£Ö¹·¢Éù*/
usleep(1000*parms.delay); /* µÈ´ý... */
} /* ÖØ¸´²¥·Å*/
return EXIT_SUCCESS;
}


¡¡¡¡½«ÉÏÃæµÄÀý×ÓÉÔ×÷À©Õ¹£¬Óû§¼´¿ÉÒÔÈÃÑïÉùÆ÷³ª¸è¡£Ö»ÒªÕÒµ½ÎåÏ߯׻ò¼òÆ×µÄÒô½×¡¢Òô³¤¡¢½ÚÅÄºÍÆµÂÊ¡¢·¢Éùʱ³¤¡¢¼ä¸ôµÄ¶ÔÓ¦¹ØÏµ¾Í¿ÉÒÔÁË¡£ÎÒÏÖÔÚ»¹¼ÇµÃÒÔǰÔÚDOSϱàд³ö¡¶ÊÀÉÏÖ»ÓÐÂèÂèºÃ¡·Ê±µÄÐË·Ü¡£×îºó£¬ËµÒ»Ð©ÌáÍâ»°£¬ÕâÆäʵÊÇÒ»¸öºÜ¼òµ¥µÄ³ÌÐò£¬µ«ÊÇÎÒÃÇÈ´ÓÃÁ˺ܳ¤µÄƪ·ù£¬Ï£Íû¶ÁÕß´ÓÒÔÉϵĴúÂëÀïÄÜÌå»áµ½Ð´ºÃµÄ³ÌÐòµÄһЩ·½·¨£¬»òÐí×îÖØÒªµÄÊÇÌí¼Ó×¢ÊͰɡ£Ò»¸ö³ÌÐòµÄ×¢ÊÍÓÀÔ¶²»»áÏӶ࣬¼´±ãÄãдµÄʱºò¾õµÃËü¸ù±¾ÊǶàÓ࣬µ«ÏàÐÅÎÒ£¬ÏàÐÅÔøÕâÑù¸æËßÎÒÃǵÄÐí¶àÓÅÐãµÄ³ÌÐòÔ±£ºÑø³ÉдºÜ¶à×¢Ê͵Äϰ¹ß¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 2236 ÌõÆÀÂÛ

  1. 69.209.132.* ÓÚ 2007-06-28 06:37:16·¢±í:

    Yhanks you :
    mp3 downloads = free mp3 = limewire music downloads = free music downloads = free music ipods = free music to download = music = free music = Free Music Downloads =
    http://musicdownloadsmp3.tripod.com free music :: http://www.nativeecosystems.org/portal_memberdata/portraits/ge3ei3#freemusicdownloads free ipod music downloads sites :: http://www.sopadre.com/gallery/louies/music.html free music to download :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music free music downloads :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music free music download :: http://mywebpage.netscape.com/music10free/music-download/ limewire music downloads :: http://hometown.aol.com/mp33music/legal_music_downloads.html free mp3 downloads :: http://musicdownloadsmp3.tripod.com/music_downloads.html free legal music downloads :: http://hometown.aol.com/mp33music/legal_music_downloads.html free music downloads :: http://mywebpage.netscape.com/bwwfst/Download-Free-Music.htm free music for ipod :: http://mywebpage.netscape.com/free5mp3/mp3music.html free music ::
    free download music .. free mp3 .. music downloads pc .. free music downloads .. free music ipods .. limewire .. FREE MUSIC DOWNLOADS ..

  2. 70.190.183.* ÓÚ 2007-06-28 03:37:28·¢±í:

    Hi !!! :
    free ipod music downloads = free music ipods = music downloads = free music downloads = download music video = free legal music downloads = Free Music Downloads = free music download = free music downloads =
    http://musicdownloadsmp3.tripod.com download music video :: http://www.nativeecosystems.org/portal_memberdata/portraits/ge3ei3#freemusicdownloads classical music downloads :: http://www.sopadre.com/gallery/louies/music.html free music :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music Free Music Downloads :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music legal music downloads :: http://mywebpage.netscape.com/music10free/music-download/ free music video :: http://hometown.aol.com/mp33music/legal_music_downloads.html free music :: http://musicdownloadsmp3.tripod.com/music_downloads.html music download :: http://hometown.aol.com/mp33music/legal_music_downloads.html free music downloads :: http://mywebpage.netscape.com/bwwfst/Download-Free-Music.htm how to download music :: http://mywebpage.netscape.com/free5mp3/mp3music.html free music download ::
    mp3 downloads .. download music video .. free music download sites .. free music downloads .. limewire .. music downloads pc .. free music ..

  3. 62.31.120.* ÓÚ 2007-06-28 03:17:36·¢±í:

    Yhanks you :
    free music downloads = free ipod music downloads = legal music downloads = free music downloads = free music for ipod = free music for ipod = music downloads = free limewire = free music downloads =
    http://musicdownloadsmp3.tripod.com music downloads pc :: http://www.nativeecosystems.org/portal_memberdata/portraits/ge3ei3#freemusicdownloads music :: http://www.sopadre.com/gallery/louies/music.html free ipod music downloads :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music Free Music Downloads :: http://www.opensource.wa.gov.au/portal_memberdata/portraits/greg34#music music download free :: http://mywebpage.netscape.com/music10free/music-download/ music download free :: http://hometown.aol.com/mp33music/legal_music_downloads.html free music :: http://musicdownloadsmp3.tripod.com/music_downloads.html download music free :: http://hometown.aol.com/mp33music/legal_music_downloads.html FREE MUSIC DOWNLOADS :: http://mywebpage.netscape.com/bwwfst/Download-Free-Music.htm legal music downloads :: http://mywebpage.netscape.com/free5mp3/mp3music.html Free Music Downloads ::
    music .. free limewire .. free music download sites .. free music downloads .. free music downloads .. free ipod music downloads .. free music downloads ..

  4. 121.189.192.* ÓÚ 2007-06-26 20:07:56·¢±í:

    Hi, my sites: :
    free music = music download free = free music download = myspace music = free music = download music for free = free legal ipod music = free mp3 files downloads = downloading song =
    http://www.freewebs.com/1fmusic/music-downloads.html free music :: http://www.tonyshoes.com/albums/musicdownloads/?mp3music=12 music download free :: http://www.freewebs.com/1fmusic/limewire.html mp3 downloads :: http://www.tonyshoes.com/albums/musicdownloads/?mp3music=95 myspace music :: http://idisk.mac.com/fmp3musicdownloads/Public/free-music.html free music :: http://idisk.mac.com/fmp3musicdownloads/Public/music.html download music for free :: http://www.freewebs.com/1fmusic/iPod-music.html get free ipod music :: http://idisk.mac.com/fmp3musicdownloads/Public/free-mp3-files-downloads.html free mp3 files downloads :: http://www.tonyshoes.com/albums/musicdownloads/?mp3music=84 downloading song :: http://idisk.mac.com/fmp3musicdownloads/Public/index.html download music free :: http://www.tonyshoes.com/albums/musicdownloads/?mp3music=117 free music downloading programs ::
    free music .. music download free .. download music free .. myspace music .. free music .. download music for free .. free music ipods ..