Vielen Dank für den Tip, wie macht man sowas? Ist das einfach nur eine Datei irgendwo erstellen? Steht da die pid drin und man prüft beim start ob ein Programm mit der pid läuft, oder wie geht das?jengelh schrieb:Wenn dein Programm startet, prüfe ob es ein Pidfile gibt, wenn nicht, erstelle es. So machen das alle (und nicht mit `ps x`).
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
bool blafasel()
{
int fd = open("/var/run/blafasel.pid", O_RDWR | O_CREAT);
char buf[32] = {};
if (fd < 0)
mist();
if (lockf(fd, F_TLOCK, 0) < 0) {
close(fd);
return false;
}
snprintf(buf, sizeof(buf), "%u", getpid());
write(fd, buf, strlen(buf));
return true;
}
int main(void)
{
if (!blafasel()) {
printf("Ne sorry, da läuft wohl schon was.\n");
return EXIT_FAILURE;
}
while (true)
;
}