作者:帅得不敢出门 c++哈哈堂31843264
不多说,看源码.
首先qpe 中会进行/etc/mtab的检测.
void SysFileMonitor::timerEvent(QTimerEvent*) // 这里只列出部分检测代码
{
// st_size is no use, it's 0 for /proc/mounts too. Read it all.
static int mtabSize = 0;
QFile f( "/etc/mtab" );
if ( f.open(IO_ReadOnly) ) {
QString s;
while( !f.atEnd() ) {
QString tmp;
f.readLine( tmp, 1024 );
s += tmp;
}
if ( (int)s.length() != mtabSize ) { // 对文件大小进行对比, 不相等说明/etc/mtab有变动, 然后通知其他程序.
mtabSize = (int)s.length();
#ifndef QT_NO_COP
QCopEnvelope("QPE/Card", "mtabChanged()" );
#endif
}
}
qtopia 中有个StorageInfo类(其他子程序可以通过它来接收/etc/mtab有变动的通知),
StorageInfo::StorageInfo( QObject *parent )
: QObject( parent )比如插入sd卡,并 mount到/sdcard后.
/etc/mtab下会添加类似程序会由这个信号进行数据更新, 示例代码如下:
StorageInfo *storage_info = new StorageInfo(this);