本文整理汇总了C++中QSharedMemory::create方法的典型用法代码示例。如果您正苦于以下问题:C++ QSharedMemory::create方法的具体用法?C++ QSharedMemory::create怎么用?C++ QSharedMemory::create使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSharedMemory
的用法示例。
在下文中一共展示了QSharedMemory::create方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char *argv[])
{
MainApp a(argc,argv);
// had to disable this for now on Mac,
// weird crash deep in Qt leaves shared memory segment dangling
#ifdef Q_OS_WIN
// http://qt-project.org/doc/qt-5/qtcore-sharedmemory-example.html
// http://qt-project.org/forums/viewthread/18262/#89444
sharedMemory.setKey("Blink1ControlShMemKey");
if( !sharedMemory.create(1) ) {
qDebug() << "Blink1Control already running";
QMessageBox::about(0, QString("Blink1Control running"),
"Blink1Control is already running.");
#ifdef Q_OS_WIN
a.processEvents(); // FIXME: why are different OSes different here?
return -1;
#else
return a.exec();
#endif
}
#endif
MainWindow w; // this seems messed up, why even use mainwindow?
// to capture power change (sleep/wake) on Windows
// (can we move this to osFixes?)
a.installNativeEventFilter(&w);
return a.exec();
}
示例2: main
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setOrganizationName(APP_ORG);
a.setApplicationVersion(APP_VERSION);
a.setApplicationName(APP_NAME);
QTranslator translator;
const QStringList localeDirs({QString("%1/languages").arg(QDir::currentPath()),
QString(qApp->applicationDirPath() + "/languages"),
QString("/usr/share/%1/languages").arg(APP_NAME),
QString("/usr/local/share/%1/languages").arg(APP_NAME),
QString(QDir::home().absolutePath() + "/.local/share/%1/languages").arg(APP_NAME),
QString(QDir::currentPath().left(QDir::currentPath().lastIndexOf("/")) + "/share/%1/languages").arg(APP_NAME)});
const QString langFile(qApp->applicationName());
foreach(const QString &dir, localeDirs){
if (translator.load(QLocale::system(),langFile, "_", dir )) {
qApp->installTranslator(&translator);
break;
}
}
QApplication::setQuitOnLastWindowClosed(false);
PopupWindow w;
w.hide();
QSharedMemory sharedMemory;
sharedMemory.setKey("QtAlsaVolume");
if (sharedMemory.attach()) {
return 0;
}
if (!sharedMemory.create(1)) {
return 0;
}
else{
return a.exec();
}
}
示例3: readonly_segfault
int readonly_segfault()
{
QSharedMemory sharedMemory;
sharedMemory.setKey("readonly_segfault");
sharedMemory.create(1024, QSharedMemory::ReadOnly);
sharedMemory.lock();
set(sharedMemory, 0, 'a');
sharedMemory.unlock();
return EXIT_SUCCESS;
}
示例4: QSharedMemory
static QSharedMemory *createSharedMemory(qint32 key, int byteCount)
{
QSharedMemory *sharedMemory = new QSharedMemory(QString(valueKeyTemplateString).arg(key));
bool sharedMemoryIsCreated = sharedMemory->create(byteCount);
if (!sharedMemoryIsCreated) {
if (sharedMemory->isAttached())
sharedMemory->attach();
sharedMemory->detach();
sharedMemoryIsCreated = sharedMemory->create(byteCount);
}
if (sharedMemoryIsCreated) {
globalSharedMemoryCache.insert(key, sharedMemory);
return sharedMemory;
}
return 0;
}
示例5: isRunning
bool isRunning(){
if(!appShare.create(16)){
if(!appShare.attach() || !appShare.lock())
return false;
void* data = appShare.data();
snprintf((char*)data, 16, "Open");
appShare.unlock();
return true;
}
return false;
}
示例6: openAida
void conflict_core::openAida(){
aida.setKey("AIDA64_SensorValues");
if (aida.isAttached()){
aida.detach();
}
if (!aida.create(10000)){
conflict.aidaOpen = false;
}else{
conflict.aidaOpen = true;
}
}
示例7: QSharedMemory
static mydsp *create_shared_dsp(){
QString key = "radium_crashreporter_" + QString::number(QDateTime::currentMSecsSinceEpoch());
QSharedMemory *shared = new QSharedMemory(key);
if(shared->create(sizeof(mydsp))==false){
fprintf(stderr,"COMPRESSOR_create_shared: Couldn't create... Error: %s\n",shared->error()==QSharedMemory::NoError?"No error (?)":shared->errorString().toAscii().data());
return NULL;
}
void *memory = shared->data();
mydsp *dsp = new(memory) mydsp();
#if 0
printf("memory: %p, shared: %p\n",memory,shared);
dsp->key = key;
dsp->shared = shared;
#endif
//printf("system: %d\n",system(QString(QString("xterm -e gdb /home/kjetil/radium_compressor/radium_compressor --args --ladspa-slave ")+key).toAscii()));
printf("system: %d\n",system(QString(QString("xterm -e gdb --args /home/kjetil/radium_compressor/radium_compressor --ladspa-slave ")+key+" &").toAscii()));
return dsp;
#if 0
if(fork()!=0){
return dsp;
}else{
QSharedMemory *shared = new QSharedMemory(key);
if(shared->attach()==false){
fprintf(stderr,"Ladspa compressor: Couldn't attach... Error: %s\n",shared->error()==QSharedMemory::NoError?"No error (?)":shared->errorString().toAscii().data());
exit(0);
}
char *argv[1]={(char*)"radium_compressor"};
mydsp *dsp = (mydsp*)shared->data();
fprintf(stderr,"dsp: %p.\n",dsp);
portData* port_data = new portData(dsp->getNumInputs(), dsp->getNumOutputs());
dsp->buildUserInterface(port_data); // This is the second time buildUserInterface is called twice on the dsp data. One time in each process.
start_program(1,argv,new PLUGIN(0, port_data, dsp));
exit(0);
return NULL;
}
#endif
}
示例8: SingleApp
int SingleApp(){//TODO:problem.
int ret = 1;
QSharedMemory sharedMemory;
sharedMemory.setKey("FishProjectApp");
// if (sharedMemory.create(1) && sharedMemory.error() != QSharedMemory::AlreadyExists)
if(sharedMemory.attach())
{
qDebug()<<"single";
return 0;
}
sharedMemory.create(1);
qDebug()<<"create";
return ret;
}
示例9: main
int main(int argc, char *argv[])
{
qRegisterMetaTypeStreamOperators<SQProfile>("SQProfile");
QApplication a(argc, argv);
signal(SIGINT, onSIGINT_TERM);
signal(SIGTERM, onSIGINT_TERM);
a.setApplicationName(QString("shadowsocks-qt5"));
a.setApplicationDisplayName(QString("Shadowsocks-Qt5"));
a.setApplicationVersion(APP_VERSION);
#ifdef Q_OS_WIN
if (QLocale::system().country() == QLocale::China) {
a.setFont(QFont("Microsoft Yahei", 9, QFont::Normal, false));
}
else {
a.setFont(QFont("Segoe UI", 9, QFont::Normal, false));
}
QIcon::setThemeName("Breeze");
#endif
QTranslator ssqt5t;
ssqt5t.load(QLocale::system(), "ss-qt5", "_", ":/i18n");
a.installTranslator(&ssqt5t);
MainWindow w;
QSharedMemory sharedMem;
sharedMem.setKey("Shadowsocks-Qt5");
if (w.isOnlyOneInstance()) {
if (!sharedMem.create(1)) {
QMessageBox::critical(&w, QObject::tr("Error"), QObject::tr("Another instance of Shadowsocks-Qt5 is already running."));
return -1;
}
}
w.show();
if (w.isHideWindowOnStartup()) {
if (w.isUsingAppIndicator()) {
QTimer::singleShot(5, &w, SLOT(minimizeToSysTray()));
} else {
w.minimizeToSysTray();
}
}
return a.exec();
}
示例10: QSharedMemory
void *COMPRESSOR_create_shared(float sample_rate){
QString key = "radium_crashreporter_" + QString::number(QDateTime::currentMSecsSinceEpoch());
QSharedMemory *shared = new QSharedMemory(key);
if(shared->create(sizeof(Compressor_wrapper))==false){
fprintf(stderr,"COMPRESSOR_create_shared: Couldn't create... Error: %s\n",shared->error()==QSharedMemory::NoError?"No error (?)":shared->errorString().toAscii().data());
return NULL;
}
void *memory = shared->data();
Compressor_wrapper *wrapper = new(memory) Compressor_wrapper(sample_rate);
printf("memory: %p, shared: %p\n",memory,shared);
wrapper->key = key;
wrapper->shared = shared;
return wrapper;
}
示例11: main
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("Scary HalloSoft");
QCoreApplication::setOrganizationDomain("hallosoft.de");
QCoreApplication::setApplicationName("Hallos Inspection Tool");
// Version
QString versionString = QString("%1.%2.%3.%4").arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_REVISION).arg(VERSION_BUILD);
a.setApplicationVersion(versionString);
qDebug() << "Version" << versionString;
// splash screen
QPixmap splashPixmap(":/pic/icons/Slpash.png");
Q_ASSERT(!splashPixmap.isNull());
QSharedMemory sharedMemory;
sharedMemory.setKey("HallosInspectionTool");
if (!sharedMemory.create(1))
{
qDebug() << "Shared memory:" << sharedMemory.errorString();
QMessageBox::warning(0,
QApplication::tr("Warning!"),
QApplication::tr("An instance of HIT is running!") );
exit(0); // Exit, a process is already running
}
QSplashScreen splash(splashPixmap);
splash.show();
qApp->processEvents();
splash.showMessage(QString("Version %1").arg(versionString), Qt::AlignBottom);
qApp->processEvents();
MainWindow w;
w.show();
splash.finish(&w);
return a.exec();
}
示例12: storeSharedData
bool TasDataShare::storeSharedData(const QString& identifier, const TasSharedData& data, QString& errMsg)
{
QSharedMemory* storage = new QSharedMemory(identifier);
QByteArray array = data.asArray();
int size = array.size();
if(!storage->create(size)){
delete storage;
return false;
}
storage->lock();
char *to = (char*)storage->data();
const char *from = array.data();
memcpy(to, from, qMin(storage->size(), size));
storage->unlock();
mStoredDataBlocks.insert(identifier, storage);
errMsg = " key:" + storage->key();
return true;
}
示例13: isRunning
// Check if the application is running. Optionally write something to its shared memory.
static bool isRunning(const char* command){
// Try to create shared memory (if successful, application was not already running)
if(!appShare.create(SHMEM_SIZE) || !appShare.lock()){
// Lock existing shared memory
if(!appShare.attach() || !appShare.lock())
return true;
bool running = false;
if(appShare.size() == SHMEM_SIZE_V015){
// Old shmem - no PID listed so assume the process is running, and print the command directly to the buffer
if(command){
void* data = appShare.data();
snprintf((char*)data, SHMEM_SIZE_V015, "%s", command);
}
running = true;
} else {
// New shmem. Scan the contents of the shared memory for a PID
QStringList lines = QString((const char*)appShare.constData()).split("\n");
if(pidActive(lines)){
running = true;
// Append the command
if(command){
lines.append(QString("Option ") + command);
QByteArray newMem = lines.join("\n").left(SHMEM_SIZE).toLatin1();
// Copy the NUL byte as well as the string
memcpy(appShare.data(), newMem.constData(), newMem.length() + 1);
}
}
}
if(running){
appShare.unlock();
return true;
}
}
// Not already running. Initialize the shared memory with our PID
snprintf((char*)appShare.data(), appShare.size(), "PID %ld", (long)getpid());
appShare.unlock();
return false;
}
示例14: isRunning
bool Application::isRunning()
{
bool running = BaseApplication::isRunning();
QSharedMemory *sharedMem = new QSharedMemory(id() + QLatin1String("-shared-memory-key"), this);
if (!running) {
// First instance creates shared memory and store PID
if (sharedMem->create(sizeof(DWORD)) && sharedMem->lock()) {
*(static_cast<DWORD*>(sharedMem->data())) = ::GetCurrentProcessId();
sharedMem->unlock();
}
}
else {
// Later instances attach to shared memory and retrieve PID
if (sharedMem->attach() && sharedMem->lock()) {
::AllowSetForegroundWindow(*(static_cast<DWORD*>(sharedMem->data())));
sharedMem->unlock();
}
}
if (!sharedMem->isAttached())
qWarning() << "Failed to initialize shared memory: " << sharedMem->errorString();
return running;
}
示例15: a
int
main(int argc, char *argv[])
{
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv);
auto startMinimized = false;
QString uri = "";
for (auto string : QCoreApplication::arguments()) {
if (string == "-m" || string == "--minimized")
startMinimized = true;
if (string == "-d" || string == "--debug")
Console();
if (string.startsWith("ring:")) {
uri = string;
}
}
#ifdef URI_PROTOCOL
QSharedMemory* shm = new QSharedMemory("RingShm");
QSystemSemaphore* sem = new QSystemSemaphore("RingSem", 0);
if (not shm->create(1024)) {
if (not uri.isEmpty()) {
shm->attach();
shm->lock();
char *to = (char*) shm->data();
QChar *data = uri.data();
while (!data->isNull())
{
memset(to, data->toLatin1(), 1);
++data;
++to;
}
memset(to, 0, 1); //null terminator
shm->unlock();
}
sem->release();
delete shm;
exit(EXIT_SUCCESS);
}
//Client listening to shm event
memset((char*)shm->data(), 0, shm->size());
ShmClient* shmClient = new ShmClient(shm, sem);
#endif
QTranslator qtTranslator;
qtTranslator.load("qt_" + QLocale::system().name(),
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
a.installTranslator(&qtTranslator);
QTranslator lrcTranslator;
lrcTranslator.load("share/libringclient/translations/lrc_" + QLocale::system().name());
a.installTranslator(&lrcTranslator);
QTranslator mainTranslator;
mainTranslator.load("share/ring/translations/ring_client_windows_" + QLocale::system().name());
a.installTranslator(&mainTranslator);
QFont font;
font.setFamily("Segoe UI");
a.setFont(font);
QFile file(":/stylesheet.css");
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
a.setStyleSheet(file.readAll());
file.close();
}
QCoreApplication::setOrganizationName("Savoir-faire Linux");
QCoreApplication::setOrganizationDomain("ring.cx");
QCoreApplication::setApplicationName("Ring");
if (not uri.isEmpty()) {
startMinimized = false;
MainWindow::instance().onRingEvent(uri);
}
if (not startMinimized)
MainWindow::instance().show();
else {
MainWindow::instance().showMinimized();
MainWindow::instance().hide();
}
MainWindow::instance().createThumbBar();
#ifdef URI_PROTOCOL
QObject::connect(shmClient, SIGNAL(RingEvent(QString)), &MainWindow::instance(), SLOT(onRingEvent(QString)));
QObject::connect(&a, &QApplication::aboutToQuit, [&a, &shmClient, &shm, &sem]() {
shmClient->terminate();
delete shmClient;
delete shm;
delete sem;
});
//.........这里部分代码省略.........