...
QSystemSemaphore和我想像的有差距,没办法只好把QSharedMemory用上了,
以下代码在Ubuntu下测试通过:
#include <QApplication>
#include <QSystemSemaphore>
#include <QSharedMemory>
#include <QLabel>
#include <QtDebug>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QSystemSemaphore sema("JAMKey",1,QSystemSemaphore::Open);
    sema.acquire();//在临界区操作共享内存  SharedMemory
    QSharedMemory mem("SystemObject");//全局对象名
    if (!mem.create(1))//如果全局对象以存在则退出
    {    
        qDebug()<<mem.errorString();
        sema.release();//如果是Unix系统,会自动释放。
        return 0;
    }
    sema.release();//临界区
    QLabel label("Demo");
    label.show();
    return app.exec();//释放栈上的mem对象。
}