タイトルで言うように、ソースディレクトリ(環境変数としてシェル内のユーザーが設定したファイル)からコピー先のディレクトリにファイルをバックアップするプログラムを作成しようとしています特定のバックアップ時(環境変数 - 形式HH:MMとしてシェル内のユーザーによって設定される)に、ユーザーがシェルで環境変数として再度設定します。 BACKUPTIMEのための環境変数が設定されているとき、私のinifinteループが動作しません。Cプログラムを実行してLinuxファイルをバックアップする
#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;
}
私の質問は以下です:私のコードは次のようです。私はループ内のすべてのステップでprintステートメントを挿入しました。また、BackupTimeの変数がシェルから設定されていない場合は常に動作します。変数が設定されると、プログラムは警告もエラーもなくコンパイルされますが、絶対に何もしません。私は別にそれを印刷したのでstrcmp(バックアップ、時間)の部分が動作することを知っています。両方が同じ場合は0を返します。
どのように私はそれを動作させることができますか?
は完璧に動作します。ありがとうございました! – JavaNewb