예제 #1
0
bool signalOtherInstance()
{
	const char *fname = getPIDFile().c_str();
	pid_t pid = readPID( fname );
	std::cout << "read pid: " << pid << std::endl;
	return ( pid > 0 && kill(pid, SIGUSR1) == 0 );
}
예제 #2
0
void KIPC::destroyPIDFile(const QString &kludgetId)
{
    QString pidfile = getPIDFile(kludgetId);
    if (QFile::exists(pidfile))
        QFile::remove
        (pidfile);

}
예제 #3
0
void writePID()
{
	const char *fname = getPIDFile().c_str();
	pid_t pid = getpid();
	FILE *fp = fopen(fname, "w");
	if( fp ) {
		fprintf(fp, "%d\n", pid);
		fclose(fp);
	} else {
		std::cerr << "error writing pid" << std::endl;
	}
}
예제 #4
0
bool KIPC::setProcessId(const QString &kludgetId, int pid)
{
    QString pidfile = getPIDFile(kludgetId);
    QFile file;
    file.setFileName(pidfile);
    if (file.open(QIODevice::WriteOnly))
    {
        file.write(QString::number(pid).toUtf8());
        file.write("\r\n", 2);
        file.close();
        return true;
    }
    return false;
}
예제 #5
0
int KIPC::getProcessId(const QString &kludgetId)
{
    int pid = 0;
    QString pidfile = getPIDFile(kludgetId);
    if (QFile::exists(pidfile))
    {
        QFile file;
        file.setFileName(pidfile);
        if (file.open(QIODevice::ReadOnly))
        {
            QString text = file.readAll();
            file.close();
            pid = text.toInt();
        }
    }

    // qDebug(">>%s %d", qPrintable(kludgetId), pid);

    if (!checkProcess(pid))
        return 0;

    return pid;
}