3

私はいくつかのcコードに取り組んでおり、プログラムでディレクトリを作成しようとしています。少し前に、ディレクトリを作成すると書き込み可能にするmkdir(file、 "w +)関数を見つけましたが、コンパイル時に警告が表示されることに気づきました。

warning: passing argument 2 of âmkdirâ makes integer from pointer without a cast

以下は私が使用しているコードです

void checkLogDirectoryExistsAndCreate()
{
    struct stat st;
    char logPath[FILE_PATH_BUF_LEN];
    sprintf(logPath, "%s/logs", logRotateConfiguration->logFileDir);
    if (stat(logPath, &st) != 0)
    {
        printf("Making log directory\n");
        mkdir(logPath, "w+");
    }
}

あなたが提供できるどんな助けにも感謝します。

4

3 に答える 3

8

このマンページによると、2番目のパラメータはamode_tです。これは数値タイプであり、ディレクトリの必要なアクセスモードを提供します。ここでは、、、およびのすべてを意味する8進数を指定する必要があります0777。これは、によって制限されます。rwxumask

これらの情報のどれがWindowsに当てはまるのかわかりません。

于 2012-10-09T09:56:01.443 に答える
5

mkdirの2番目の引数は、タイプである必要がありmode_tます。chmodのマニュアルページには、使用可能なモードが一覧表示されます(ORで結合できます)。

于 2012-10-09T09:53:24.457 に答える
4

関数の2番目のパラメーターはmkdir文字列ではありません。これは、モードを定義するためのフラグの組み合わせです。

詳細については、mkdirのマニュアルページを参照してください。完全なフラグリストについては、 sys / stat.hを参照してください(「S_IRWXU」を検索してください)。

于 2012-10-09T09:54:32.577 に答える