0

ファイルが存在するかどうかをチェックする次のプログラムを実行していますstat(). しかし、パスを渡すと、エラー$HOME/file.shで失敗しENOENTます。しかし、展開されたパスを渡すと、つまり/root/file.shstat()成功、つまり終了コード 0 が返されます。

int main ()
{
    struct stat statbuf;
    char path [1024];
    strcpy(path,"$HOME/file.sh");

    int rc = stat(path,&statbuf);

    if (rc == -1 )
    {
        printf ("File not found !!\n");
    }
    else
        printf("Found it !!\n");

    return 0;
}
4

1 に答える 1

4

strcpy()$HOME環境変数をその値に展開しませんが、抽出文字列リテラルを指定どおりにコピーします。$HOMEを使用して値を取得できますgetenv()

失敗メッセージを次のように変更します。

printf("File not found: %s\n", path);

確認のため。

于 2012-09-18T13:24:47.757 に答える