【已解决】qt 调用外部应用报错 QWSLock::down(): Invalid argument QWSLock::up(): Invalid argumen
来源:互联网 发布:linux虚拟机建立文件夹 编辑:程序博客网 时间:2024/05/21 17:16
qt4.8 再arm上运行
外部调用b程序
QProcess *pro = new QProcess;
pro->start("b");
会一直报错打印:
QWSLock::down(): Invalid argument
QWSLock::up(): Invalid argumen
通过网上查阅资料了解到是qt4.8的一个bug,修改qt源码文件重新编译就行了。
参考:http://lists.openmoko.org/pipermail/community/2012-November/067806.html
直接使用我做的脚本文件也行,自行修改源码也行;
1.脚本文件
下载patch_qt4.8.6.tar.gz 解压到qt-everywhere-opensource-src-4.8.6/中便可;(其他qt4.8的版本的没试过,我觉得应该都一样);
2.源码修改
‘-’代表注释掉 ‘+’代表修改或添加diff --git a/src/gui/embedded/qwslock.cpp b/src/gui/embedded/qwslock.cppindex 9914a24..1055785 100644--- a/src/gui/embedded/qwslock.cpp+++ b/src/gui/embedded/qwslock.cpp@@ -83,9 +83,13 @@ QWSLock::QWSLock(int id) : semId(id) QWSSignalHandler::instance()->addWSLock(this); #endif + owned = false;+ #ifndef QT_POSIX_IPC if (semId == -1) { semId = semget(IPC_PRIVATE, 3, IPC_CREAT | 0666);+ owned = true;+//qDebug("QWSLock::QWSLock(): %p, %d", this, (int)semId); if (semId == -1) { perror("QWSLock::QWSLock"); qFatal("Unable to create semaphore");@@ -100,7 +104,6 @@ QWSLock::QWSLock(int id) : semId(id) } #else sems[0] = sems[1] = sems[2] = SEM_FAILED;- owned = false; if (semId == -1) { // ### generate really unique IDs@@ -134,9 +137,12 @@ QWSLock::~QWSLock() if (semId != -1) { #ifndef QT_POSIX_IPC- qt_semun semval;- semval.val = 0;- semctl(semId, 0, IPC_RMID, semval);+if (owned) {+ qt_semun semval;+ semval.val = 0;+ semctl(semId, 0, IPC_RMID, semval);+}+//qDebug("QWSLock::~QWSLock(): %p, %d", this, (int)semId); semId = -1; #else // emulate the SEM_UNDO behavior for the BackingStore lock@@ -170,8 +176,10 @@ bool QWSLock::up(unsigned short semNum) if (semNum == BackingStore) sops.sem_flg |= SEM_UNDO; + //qDebug("QWSLock::up(): %p, semop(%d, %d)", this, (int)semId, (int)semNum); EINTR_LOOP(ret, semop(semId, &sops, 1)); #else+ //qDebug("QWSLock::up(): %p, sem_post(%d)", this, (int)(sems[semNum])); ret = sem_post(sems[semNum]); #endif if (ret == -1) {@@ -195,6 +203,7 @@ bool QWSLock::down(unsigned short semNum, int) if (semNum == BackingStore) sops.sem_flg |= SEM_UNDO; + //qDebug("QWSLock::down(): %p, semop(%d, %d)", this, (int)semId, (int)semNum); EINTR_LOOP(ret, semop(semId, &sops, 1)); #else EINTR_LOOP(ret, sem_wait(sems[semNum]));diff --git a/src/gui/embedded/qwslock_p.h b/src/gui/embedded/qwslock_p.hindex d324e4f..d867d20 100644--- a/src/gui/embedded/qwslock_p.h+++ b/src/gui/embedded/qwslock_p.h@@ -86,8 +86,8 @@ private: int lockCount[2]; #ifdef QT_POSIX_IPC sem_t *sems[3];- bool owned; #endif+ bool owned; }; QT_END_NAMESPACEdiff --git a/src/gui/kernel/qapplication_qws.cpp b/src/gui/kernel/qapplication_qws.cppindex 5314777..38ff052 100644--- a/src/gui/kernel/qapplication_qws.cpp+++ b/src/gui/kernel/qapplication_qws.cpp@@ -531,6 +531,7 @@ QWSDisplay::Data::~Data() csocket->flush(); // may be pending QCop message, eg. delete csocket; }+ //qDebug("QWSDisplay::Data::~Data()"); delete clientLock; clientLock = 0; #endif@@ -722,6 +723,7 @@ void QWSDisplay::Data::reinit( const QString& newAppName ) mouseFilter = 0; qt_desktopWidget = 0;+ //qDebug("QWSDisplay::Data::reinit()"); delete QWSDisplay::Data::clientLock; QWSDisplay::Data::clientLock = 0;
0 0
- 【已解决】qt 调用外部应用报错 QWSLock::down(): Invalid argument QWSLock::up(): Invalid argumen
- 已解决:Was启动报错 mbind:Invalid argument
- udp调用sendmsg报错Invalid argument
- shmget报错Invalid argument
- Invalid argument looking up property
- [Android]模拟器不能启动,报错:Cannot set up guest memory 'android_arm': Invalid argument
- mmap报错Invalid argument的解决办法
- hwclock: settimeofday: Invalid argument 解决
- invalid argument
- mmap语法没问题报错:--Invalid argument
- linux系统fdisk报错:error 22: Invalid argument
- 创建文件报错 java.io.IOException: Invalid argument
- linux系统fdisk报错error 22: Invalid argument解决办法
- python打开文件报错OSError: [Errno 22] Invalid argument:
- WAS_启动报mbind:Invalid argument
- Qt Createor error writing to -: Invalid argument
- Qt Createor error writing to -: Invalid argument
- 解决Zend_Db SQLSTATE[HY000] [2002] Invalid argument
- MyEclipse中的JDK环境注意的几个地方
- Hibernate框架入门(学习笔记)
- 数据结构实验之栈六:下一较大值(二)
- c++链式队列的实现
- 总结一下使用Swift遇到的几个小问题和几个小知识点
- 【已解决】qt 调用外部应用报错 QWSLock::down(): Invalid argument QWSLock::up(): Invalid argumen
- 【REACT NATIVE 系列教程之六】重写SHOULDCOMPONENTUPDATE指定组件是否进行重绘
- js点击按钮返回一个确认框
- 数据结构 —— 链表总结
- 权限管理设计
- Eclipse中Android项目的Android Private Libraries不自动引入libs下的jar包
- 关于IntentService与Service的使用选择
- Linux Netfilter开发小结
- Hibernate开发环境搭建(学习笔记)