救急啊:
我现在使用了linux下的异步通知,即当底层设备就绪后主动通过信号通知应用程序,相当于模拟了硬件中断机制。
同时在应用层上我有个功能是要拷贝文件到U盘上,用到的是system("cp -r /mnt /udisk")
可是运行的时候,一旦执行system这句话,整个程序就死了,没反应了。
把异步通知注释掉掉不使用,或者注释掉system,就不会有死。
有没有哪位大侠遇到过这种问题,怎么解决啊?
我的异步通知部分的代码如下:
int main(int argc, char *argv[])
{
int Oflags;
rtc_fd = ::open("/dev/rtc", 0);
if (rtc_fd < 0)
{
perror("open rtc failed.\n");
}
pwm_fd = ::open("/dev/pwm", 0);
if (pwm_fd < 0) {
perror("open pwm device failed.\n");
}
signal(SIGIO, sig_handler);
fcntl(pwm_fd, F_SETOWN, getpid());
Oflags = fcntl(pwm_fd, F_GETFL);
fcntl(pwm_fd, F_SETFL, Oflags | FASYNC);
// set the frequency of timer as 1000Hz
int ret = ::ioctl(pwm_fd, PWM_IOCTL_SET_FREQ, 1000);
if(ret < 0) {
perror("set the frequency of the pwm");
exit(1);
}
File1.setFileName("/mnt/line1_file.txt");
if (!File1.open(QIODevice::ReadWrite | QIODevice::Text))
qDebug() << File1.errorString();
QApplication a(argc, argv);
mainWidget w;
w.setWindowFlags(Qt::FramelessWindowHint);
w.show();
return a.exec();
}