我用QFile打开一个文件,然后用QSocketNotifier监听它的描述符是否可读,如果activatied则进入槽函数打印一句话。
但实际运行时,终端不停的重复打印(不停的进入槽函数),我很奇怪,没有往文件写任何东西啊?如果我去读文件,什么都读不到。。。
代码如下:
Server::Server(QString fileName, QObject *parent)
:QObject(parent)
{
file = new QFile(fileName, this);
if(file->open(QIODevice::ReadWrite)){
if(file->handle() >= 0){
notifier = new QSocketNotifier(file->handle(), QSocketNotifier::Write, this);
connect(notifier, SIGNAL(activated(int)), this, SLOT(onActivated(int)));
}
}else
qDebug() << "open file failed!";
}
void
Server::onActivated(int)
{
char buf[32];
int n = file->read(buf, 31);
qDebug() << "n = " << n;
}
如上所述,总是不停的进onActivated,读的n总是0。。。。
盼望解答疑惑,谢谢!