Wie der Titel sagt, versuche ich ein Programm zu schreiben, das Dateien aus einem Quellverzeichnis (vom Benutzer in der Shell als Umgebungsvariable gesetzt) in ein Zielverzeichnis sichert (erneut vom Benutzer in der Shell als Umgebungsvariable festgelegt) zu einer bestimmten Sicherungszeit (vom Benutzer in der Shell als Umgebungsvariable festgelegt - Format HH: MM). Mein Code ist folgende:Ausführen eines C-Programms zum Sichern von Linux-Dateien
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<time.h>
int main(int argc, char *argv[])
{
int b=1;
char backup[100];
char *source=getenv("BackupSource");
char *destination=getenv("BackupDestination");
char *btime=getenv("BackupTime");
time_t getTime;
struct tm *actualTime;
time(&getTime);
actualTime=localtime(&getTime);
strftime(backup, 100, "%H:%M", actualTime);
while(b)
{
while(strcmp(backup,btime)!=0)
{
sleep(60);
}
system("cp -r $BackupSource $BackupDestination");
}
return 0;
}
Meine Frage ist folgende: wenn die Umgebungsvariable für Backup gesetzt ist meine inifinte Schleife funktioniert nicht. Ich habe print-Anweisungen bei jedem Schritt in der Schleife eingefügt und wenn die Variable für BackupTime nicht aus der Shell gesetzt ist, funktioniert es immer. Wenn die Variable gesetzt ist, kompiliert das Programm ohne irgendwelche Warnungen oder Fehler, aber es tut absolut nichts. Ich weiß, dass der Teil strcmp (backup, time) funktioniert, weil ich es separat ausgedruckt habe und wenn beide gleich sind, gibt es 0 zurück.
Irgendwelche Ideen, wie ich es zum Laufen bringen könnte?
funktioniert perfekt (wenn ich sonst schlafen (60)). Vielen Dank! – JavaNewb