linuxÎļþϵͳ±ä»¯Í¨Öª»úÖÆ
Ò»¡¢dnotify»úÖÆ
1¡¢Ê¹ÓÃ
ͨ¹ý¶ÔÎļþÃèÊö·ûÉèÖüàÌýÐźÅʵÏÖ¡£
//ÉèÖÃÎļþÏàÓ¦ÐźÅ
fcntl(fd, F_SETSIG, SIGRTMIN + 1);
//ÉèÖøÃÎļþÒª¼àÌýʼþ
fcntl(fd, F_NOTIFY, DN_ACCESS|DN_MODIFY|DN_CREATE|DN_RENAME|DN_DELETE|DN_ATTRIB|DN_MULTISHOT);
ʣϵľÍÊÇÐźŴ¦ÀíÁË¡£
2¡¢È±µã
ȱµã1£ºdnotify»úÖÆ¶Ô¼àÊÓµÄÿ¸öÎļþ¼Ð¶¼´ò¿ªÁËÒ»¸öÎļþÃèÊö·û£¬Èç¹ûÎļþ¼ÐËùÔÚÎļþϵͳÐèÒªumount¾Í²»ÐÐÁË¡£
ȱµã2£ºdnotify»úÖÆÖ»ÄܶÔÎļþ¼Ð½ø³Ì¼àÊÓ¡£
3¡¢Ó¦ÓÃ
Àý×Ó£º
//ÒªÓÃfcntl( fd, F_SETSIG, SIGRTMIN + 1 )¾ÍÒªÉèÖÃÕâ¸öºê
#define _GNU_SOURCE 1
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#define FOLDER_MAXLEN 128
static char listen_folder[FOLDER_MAXLEN];
static void myhandler( int );
int set_folder_signal( void )
{
struct sigaction act;
int fd;
act.sa_handler = myhandler;
sigemptyset( &act.sa_mask );
act.sa_flags = 0;
sigaction( SIGRTMIN + 1, &act, NULL );
if(( fd = open( listen_folder, O_RDONLY )) < 0 )
return -1;
printf( "fd=%d\n", fd );
fcntl( fd, F_SETSIG, SIGRTMIN + 1 );
fcntl( fd, F_NOTIFY, DN_CREATE );
return 0;
}
int main(int argc, char *argv[] )
{
if( argc != 2 )
{
printf( "%s filepath\n", argv[0] );
exit( 0 );
}
strncpy( listen_folder, argv[1], FOLDER_MAXLEN - 1 );
if( set_folder_signal( ) < 0 )
{
printf( "set signal to %s fail\n", argv[1] );
exit( 0 );
}
while( 1 )
{
pause();
printf( "a signal return\n" );
}
}
static void myhandler( int signo )
{
printf( "signalno=%d,a file was creat\n", signo );
set_folder_signal();
}
ÒÔÉÏÀý×ÓÐźŴ¦Àíº¯ÊýÖ»Äܵõ½ÐźűàºÅÐÅÏ¢¡£¿ÉÒÔͨ¹ýsa_sigactionÐźŴ¦Àíº¯ÊýÀ´»ñµÃ¸ü¶àÐÅÏ¢£¬µ«Ò²ºÜÓÐÏÞ¡£±ÈÈçÎļþÃèÊö·û¡£
Àý×Ó£º
//ÒªÓÃfcntl( fd, F_SETSIG, SIGRTMIN + 1 )¾ÍÒªÉèÖÃÕâ¸öºê
#define _GNU_SOURCE 1
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <
Ïà¹ØÎĵµ£º
¸¸×Ó½ø³ÌÈçºÎͨÐÅ£¿
Ò»¶Ô¸¸×Ó½ø³Ì¿ÉÒÔͨ¹ýÕý³£µÄ½ø³Ì¼äͨÐŵİ취(¹ÜµÀ£¬Ì×½Ó×Ö£¬ÏûÏ¢¶ÓÁУ¬¹²ÏíÄÚ´æ)½øÐÐͨÐÅ£¬µ«Ò²¿ÉÒÔͨ¹ýÀûÓÃËüÃÇ×÷Ϊ¸¸×Ó½ø³ÌµÄÏ໥¹ØÏµ¶ø¾ßÓеÄÒ»Ð©ÌØÊâ·½·¨¡£
Ò»¸ö×îÏÔÈ»µÄ·½·¨ÊǸ¸½ø³Ì¿ÉÒԵõ½×Ó½ø³ÌµÄÍ˳ö״̬¡£
ÒòΪ×Ó½ø³Ì´ÓËüµÄ¸¸½ø³Ì¼Ì³ÐÎļþÃèÊö·û£¬ËùÒÔ¸¸½ø³Ì¿ÉÒÔ´ò¿ªÒ»¸ö¹ÜµÀµÄÁ½¶Ë£¬È» ......
µ±LinuxÄÚºËÔÚÌåϵ½á¹¹²îÒì½Ï´óµÄƽ̨֮¼äÒÆÖ²Ê±£¬»á²úÉúÓëÊý¾ÝÀàÐÍÏà¹ØµÄÎÊÌâ¡£
.ÔÚ±àÒëÄÚºËʱʹÓà -Wall -W strict-prototypes Ñ¡Ïî, ¿ÉÒÔ±ÜÃâºÜ¶à´íÎóµÄ·¢Éú
.ÄÚºËʹÓõĻù±¾Êý¾ÝÀàÐÍÖ÷ÒªÓÐ:
int ±ê×¼CÓïÑÔÕûÊýÀàÐÍ
&n ......
ÔÚ±àÒëÒÆÖ²LinuxÄں˹ý³ÌÖУ¬ÄÚºËÑ¡ÏîÅäÖÃÊǺܳ£¼ûµÄ²Ù×÷¡£±¾ÎÄ·ÖÎöÁ˳£¼ûÑ¡ÏîµÄ¾ßÌ庬Ò壬´ÓÕâÀ↑ʼ½øÈëÄÚºËÍêÈ«ÅäÖÃÑ¡Ï
1 code maturity level options£¨´úÂë³ÉÊì¶ÈÑ¡Ï
1.1 Prompt for development and/or incomplete code/drivers
ÏÔʾÉÐÔÚ¿ª·¢ÖлòÉÐδÍê³ÉµÄ´úÂëÓëÇý¶¯¡£Ä¬ÈÏÇé¿öÏÂÊÇÑ¡Ôñ ......
£¨±¾ÎÄÕÂÖ÷ÒªÊǸöÈËÈÝÒ×ÕÒ×ÊÁ϶ø×ªµÄ£¬±¾ÎÄÀ´´Ë http://hackang.javaeye.com/blog/234000£©
Ò»¡¢Ê×ÏȲ鿴ÓÐûÓа²×°cvs
rpm -qa|grep cvs
Èç¹ûûÓа²×°£¬È¥downÒ»¸örpm°ü°²×°Ò»°Ñ rpm -i cvs-1.11.22-5.el5.i386.rpm
¶þ¡¢Ìí¼Ócvs×éºÍÓû§
groupadd cvs
useradd -g cvs -s / ......
ÎÒÃÇÔÚ¸ãÐÔÄܲâÊÔµÄʱºò£¬¶Ôºǫ́·þÎñÆ÷µÄCPUÀûÓÃÂÊ¼à¿ØÊÇÒ»¸ö³£ÓõÄÊֶΡ£·þÎñÆ÷µÄCPUÀûÓÃÂʸߣ¬Ôò±íÃ÷·þÎñÆ÷ºÜ·±Ã¦¡£Èç¹ûǰ̨ÏìӦʱ¼äÔ½À´Ô½´ó£¬¶øºǫ́CPUÀûÓÃÂÊʼÖÕÉϲ»È¥£¬ËµÃ÷ÔÚij¸öµØ·½ÓÐÆ¿¾±ÁË£¬ÏµÍ³ÐèÒªµ÷ÓÅ¡£Õâ¸öÊǼ´Ê¹²»¶®¼¼ÊõµÄÈ˶¼ÈÝÒ×Àí½âµÄÊÂÇé¡£
ÉÏÃæÀí½â¶ÔÂð£¿ÎÒ¸öÈ˾õµÃ²»Ê®·Ö× ......