1
¡¢ÏÂÔØÔ´Âë
¡¡¡¡
´Ó
CVS
µÄ¹Ù·½ÍøÕ¾
cvshome.org
ÉÏѰÕÒ£¬ÓÉÓÚ
CVS
ÀúÊ·ÉÏÒ²³öÏÖ¹ýһЩ°²È«Â©¶´£¬ËùÒÔ½¨ÒéÒª¶¨ÆÚÈ¥Æä¹Ù·½ÍøÕ¾ÉÏ¿´¿´ÓÐûÓÐ×îÐÂ°æ±¾ÍÆ³ö¡£
¡¡¡¡
2
¡¢±àÒë°²×°
¡¡¡¡
# tar -xjpvf cvs-1.12.5.tar.bz2
¡¡¡¡
# cd cvs-1.12.5
¡¡¡¡
# ./configure --prefix=/usr/local/terry_yu/cvs
¡¡
--disable-server-flow-control
¡¡¡¡
# make
¡¡¡¡
# make install
¡¡¡¡ÒÔÉÏÖ¸Á
CVS
°²×°µ½
/usr/local/terry_yu/cvs
Õâ¸öĿ¼ÉÏ¡£
¡¡¡¡×¢£º³ýÁËʹÓÃÔ´Âë°ü½øÐа²×°Ö®Í⣬»¹¿ÉÒÔʹÓÃ
RPM
°üÀ´°²×°¡£
¡¡¡¡
3
¡¢ÉèÖÃÆô¶¯
CVS
·þÎñ
¡¡¡¡ÔÚ
Linux
ÉÏ
CVS
·þÎñ¿ÉÒÔͨ¹ý
inetd
¡¢
xinetd
»ò
tcpwrapper
µÈÀ´Æô¶¯£¬ÆäÖÐ
inetd
ÓÉÓÚ°²È«ÀíÓÉÔÚÐí¶à³¡ºÏÒѾ±»
xinetd
ËùÈ¡´úÁË£¬ÕâÀïÎÒÃÇʹÓÃ
xinetd
À´Æô¶¯
CVS
·þÎñ¡£
ÔÚ
/etc/xinetd.d
Ŀ¼ÏÂΪ
CVS
·þÎñ´´½¨Ò»¸öÅäÖÃÎļþ£¬±ÈÈ磺
/etc/xinetd.d/cvspserver
£¬±à¼
/etc/xinetd.d/cvspserver
£¬ÊäÈëÒÔÏÂÄÚÈÝ£º
¡¡¡¡
service cvspserver
¡¡¡¡
{
¡¡¡¡
disable = no
¡¡¡¡
socket_type = stream
¡¡¡¡
wait = no
¡¡¡¡
user = root
¡¡¡¡
env = HOME=
¡¡¡¡ ......
1.¿â¸ÅÊö
¿â¿ÉÒÔ·ÖΪ¾²Ì¬¿âºÍ¶¯Ì¬¿â£¬¾²Ì¬¿â±àÒëʱ±ØÐë´æÔÚ£¬³ÌÐòÔËÐÐʱ²»ÐèÒª¡£
¶¯Ì¬¿âÒ²³Æ¹²Ïí¿â£¬Æä´úÂë²»»áÁ´½Óµ½Ä¿±êÎļþÖ®ÖУ¬Ö»Óе±¶¯Ì¬¿â¿É·ÃÎÊʱ£¬Ó¦ÓóÌÐò²ÅÄÜÕýÈ·µØÖ´Ðж¯Ì¬¿âº¯Êý¡£Ö´Ðж¯Ì¬¿âÓÐÁ½ÖÖ·½Ê½£ºÒþʽµ÷ÓúÍÏÔʾµ÷Óá£Òþʽµ÷ÓÃÒ²³Æ¹²Ïí¿âµÄ¾²Ì¬¼ÓÔØ£¬¶¯Ì¬¿âº¯ÊýÔÚÓ¦ÓóÌÐò¿ªÊ¼Ö´ÐÐʱ»á×Ô¶¯ÔØÈëÄڴ棬½ø³Ì½áÊøÊ±ÓÖ×Ô¶¯Ð¶ÔØ¡£±àÒ뷽ʽÓ뾲̬¿âÒ»Ö¡£ÏÔʾµ÷ÓÃÒ²³Æ¹²Ïí¿âµÄ¶¯Ì¬¼ÓÔØ£¬µ÷ÓÃʱ±ØÐë×ñÊØdlopenµÈº¯ÊýµÄ¹æÔòʵÏÖµ÷Óá£
ÔÚUnixÖУ¬Ê¹ÓÃarÃüÁî¿ÉÒÔ´´½¨»ò²Ù×÷¾²Ì¬¿â£¬Æä¸ñʽΪ£º
ar [drqtpmx] [option] archivefile objfile ….
²ÎÊý
ÒâÒå
-r
½«objfileÎļþ²åÈ뾲̬¿âβ»òÌæ»»¾²Ì¬¿âÖÐͬÃûÎļþ
-x
´Ó¾²Ì¬¿âÎļþÖгéÈ¡Îļþobjfile
-t
´òÓ¡¾²Ì¬¿âµÄ³ÉÔ±ÎļþÁбí
-d
´Ó¾²Ì¬¿âÎļþÖÐɾ³ýÎļþobjfile
-s
ÖØÖþ²Ì¬¿âÎļþË÷Òý
-v
´´½¨ÎļþÈßÓàÐÅÏ¢
-c
´´½¨¾²Ì¬¿âÎļþ
Àý×Ó£º³éÈ¡¾²Ì¬¿â/usr/lib/lic.aÖеÄÎļþ
# ar –x /usr/lib/libc.a
Àý×Ó£º×éÖ¯Îļþxcvt.oºÍxstat.o´´½¨¾²Ì¬¿âlibccc.a¡£
# ar –r libccc.a xcvt.o xstat.o
2. ¾²Ì¬¿â±à³Ì
2.1 Éè¼Æ¿âÔ´Âë
/******pr1.c*****/
void pir ......
linuxÐźŻúÖÆ
ÐźÅÌṩÁËÒ»ÖÖ֪ͨ½ø³Ìϵͳʼþ·¢ÉúµÄ»úÖÆ£¬ËüÒ²ÊÇ×÷ΪÓû§½ø³ÌÖ®¼äͨÐźÍͬ²½µÄ
Ò»ÖÖÔʼ»úÖÆ¡£ÔÚ½ø³ÌÇ¨ÒÆµÄÇé¿öÏ£¬ÈçºÎ´¦ÀíÐźÅÄØ£¿Õⲿ·Ö½éÉÜÁËMOSIXϵͳ¶ÔÐźÅ
»úÖÆµÄ´¦Àí¡£
LINUXÐźŻúÖÆ
ÐźÅÊÇÒì²½µÄ½ø³Ì¼äͨѶ»úÖÆ,ÊÇÔÚÈí¼þ²ã´ÎÉ϶ÔÖжϻúÖÆµÄÒ»ÖÖÄ£Äâ¡£LINUXÄں˵ÄÐÅ
ºÅ»úÖÆ·ûºÏPOSIX.4µÄ¹æ¶¨£¬ÕâÊÇPOSIX.1±ê×¼µÄÒ»¸ö³¬¼¯¡£
ÿ¸ö½ø³ÌµÄtask_struct½á¹¹Öж¼ÓиöÖ¸Õësig£¬Ö¸ÏòÒ»¸ösingal_struct½á¹¹£¬½á¹¹ÖеÄ
Êý×éaction[]Ï൱ÓÚÒ»¸öÐźÅÏòÁ¿±í£¬Ã¿¸öÔªËØÈ·¶¨Á˽ø³Ì½ÓÊÕµ½Ò»¸ö¾ßÌåµÄÐźÅʱӦ
¸Ã²ÉÈ¡µÄÐж¯¡£
struct signal_struct {
atomic_t count;
struct k_sigaction action[_NSIG];
spinlock_t siglock;
};
ÄÇôϵͳÈçºÎÅжÏÒ»¸ö½ø³ÌÊÇ·ñÓÐÐźÅÔڵȴý´¦ÀíÄØ£¿ÕâÊÇͨ¹ýtask_struct½á¹¹ÖеÄsi
gpending³ÉÔ±¡£task_struct½á¹¹ÖеÄblocked³ÉÔ±ÔòΪÆÁ±ÎÐźŵļ¯ºÏ£¬pending³ÉÔ±Ôò
ΪÐźŶÓÁУ¬Ã¿²úÉúÒ»¸öÐźÅÔò°ÑËü¹ÒÈëÕâ¸ö¶ÓÁУ¬ÐźÅλͼsignalÒ²±£´æÔÚÆäÖС£
Óû§³£ ......
ת×Ô£º
http://blog.chinaunix.net/u2/63316/showart_547992.html
LinuxϵÄĿ¼ÊÇÒÀÕÕ±ê×¼À´Êµ×÷µÄ£¬Òò´Ë£¬Äú¿ÉÒÔºÁÎÞÎÊÌâµØÒÆÖ³µ½ÈÎºÎÆäËüUNIXƽ̨¡£
--------------------------------------------------------------------------------
getcwd/getwd : È¡µÃĿǰËùÔÚĿ¼
--------------------------------------------------------------------------------
#include
char * getcwd(char *buf,size_t size);
buf½«»á·µ»ØÄ¿Ç°Â·¾¶Ãû³Æ¡£
ÈκεĴíÎó·¢Éú£¬½«»á·µ»ØNULL¡£Èç¹û·¾¶³¤¶È³¬¹ýsize£¬errnoΪERANGE¡£getcwd·µ»ØµÄÖµÓÀÔ¶ÊÇûÓÐsymbol linkµÄ¡£
--------------------------------------------------------------------------------
#include
char *getwd(char *buf);
getwdÊǸöΣÏյĺ¯Êý£¬Ò»°ã¶¼»áÇ¿ÁÒ½¨Òé²»ÒªÓã¬ÒòΪÄúÎÞ·¨È·¶¨×µÄĿ¼³¤¶ÈΪ¶àÉÙ¡£PATH_MAX¶¨ÒåÁË×µÄ·¾¶³¤¶È¡£ÔÚLinuxÏÂËùÒÔÌṩÕâ¸öº¯ÊýÖ÷ÒªÊÇÒòΪ¡¸´«Í³¡¹¡£
--------------------------------------------------------------------------------
//» ......
http://blog.csdn.net/noah1987/archive/2008/10/21/3118934.aspx
±¾³ÌÐò¿ÉÒÔ¶ÁÈ¡.wavÎļþ£¬È»ºó½øÐв¥·Å¡£
ʹÓÃǰ£¬ÇëÈ·ÈÏÄúÊÇ·ñ°²×°ÒôƵÇý¶¯¡£
È·ÈÏ·½·¨£ºcat /etc/sndstat£¬Èç¹ûÏÔʾÎÞ´ËÉ豸£¬ÔòûÓа²×°Çý¶¯¡£
°²×°Çý¶¯ºÜ¼òµ¥£¬µ½oss.comÉÏÏÂÔØÒôƵÇý¶¯£¬È»ºó°´ÕÕÍøÉϵĽ̳̽øÐоͿÉÒÔÁË¡£
Ô´´úÂëÈçÏ£º
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/soundcard.h>
/* ÏÂÃæµÄÈý¸ö²ÎÊýÊǸú¾ßÌåÎļþÏà¹ØµÄ£¬ÎļþʲôÑù£¬¾ÍÒªÉèÖóÉʲôÑù */
#define RATE 11025
#define SIZE 16
#define CHANNELS 1 // 1±íʾµ¥ÉùµÀ£¬2ΪÁ¢ÌåÉù
/* ................ */
unsigned
char
buf[RATE*SIZE/8]; //bufÀïÃæÕýºÃ·ÅÒ»ÃëÖÓµÄÒôƵ£¬ÏÂÃæµÄ¼ÆÊ±»¹ÒªÓÃ
int
main()
{
int
fd;
int
wavfd; //wavÎļþµÄà ......
http://blog.csdn.net/noah1987/archive/2008/10/21/3118934.aspx
±¾³ÌÐò¿ÉÒÔ¶ÁÈ¡.wavÎļþ£¬È»ºó½øÐв¥·Å¡£
ʹÓÃǰ£¬ÇëÈ·ÈÏÄúÊÇ·ñ°²×°ÒôƵÇý¶¯¡£
È·ÈÏ·½·¨£ºcat /etc/sndstat£¬Èç¹ûÏÔʾÎÞ´ËÉ豸£¬ÔòûÓа²×°Çý¶¯¡£
°²×°Çý¶¯ºÜ¼òµ¥£¬µ½oss.comÉÏÏÂÔØÒôƵÇý¶¯£¬È»ºó°´ÕÕÍøÉϵĽ̳̽øÐоͿÉÒÔÁË¡£
Ô´´úÂëÈçÏ£º
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/soundcard.h>
/* ÏÂÃæµÄÈý¸ö²ÎÊýÊǸú¾ßÌåÎļþÏà¹ØµÄ£¬ÎļþʲôÑù£¬¾ÍÒªÉèÖóÉʲôÑù */
#define RATE 11025
#define SIZE 16
#define CHANNELS 1 // 1±íʾµ¥ÉùµÀ£¬2ΪÁ¢ÌåÉù
/* ................ */
unsigned
char
buf[RATE*SIZE/8]; //bufÀïÃæÕýºÃ·ÅÒ»ÃëÖÓµÄÒôƵ£¬ÏÂÃæµÄ¼ÆÊ±»¹ÒªÓÃ
int
main()
{
int
fd;
int
wavfd; //wavÎļþµÄà ......
±¾³ÌÐò¿ÉÒÔ¶ÁÈ¡.wavÎļþ£¬È»ºó½øÐв¥·Å¡£
È·ÈÏ·½·¨£ºcat /etc/sndstat£¬Èç¹ûÏÔʾÎÞ´ËÉ豸£¬ÔòûÓа²×°Çý¶¯¡£
#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/ioctl.h>#include <stdlib.h>#include <stdio.h>#include <linux/soundcard.h>/* ÏÂÃæµÄÈý¸ö²ÎÊýÊǸú¾ßÌåÎļþÏà¹ØµÄ£¬ÎļþʲôÑù£¬¾ÍÒªÉèÖóÉʲôÑù */
int main(){ int fd; int wavfd; //wavÎļþµÄÃèÊö·û
if (fd < 0) { printf("open of /dev/dsp failed"); exit(1);} wavfd = open("12193767609.wav",O_RDONLY); if (wavfd < 0) { printf("open of wav failed");   ......
±¾³ÌÐò¿ÉÒÔ¶ÁÈ¡.wavÎļþ£¬È»ºó½øÐв¥·Å¡£
È·ÈÏ·½·¨£ºcat /etc/sndstat£¬Èç¹ûÏÔʾÎÞ´ËÉ豸£¬ÔòûÓа²×°Çý¶¯¡£
#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/ioctl.h>#include <stdlib.h>#include <stdio.h>#include <linux/soundcard.h>/* ÏÂÃæµÄÈý¸ö²ÎÊýÊǸú¾ßÌåÎļþÏà¹ØµÄ£¬ÎļþʲôÑù£¬¾ÍÒªÉèÖóÉʲôÑù */
int main(){ int fd; int wavfd; //wavÎļþµÄÃèÊö·û
if (fd < 0) { printf("open of /dev/dsp failed"); exit(1);} wavfd = open("12193767609.wav",O_RDONLY); if (wavfd < 0) { printf("open of wav failed");   ......