ディレクトリを作成する簡単なCプログラム(mkdirクローン)を作成しようとしています。これは私がこれまで持っているものです。PosixでCを使って正しい許可を与えてディレクトリを作成する方法
#include <stdlib.h>
#include <sys/stat.h> // mkdir
#include <stdio.h> // perror
mode_t getumask()
{
mode_t mask = umask(0);
umask (mask);
return mask;
}
int main(int argc, const char *argv[])
{
mode_t mask = getumask();
printf("%i",mask);
if (mkdir("trial",mask) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
このコードは、d---------
でディレクトリを作成しますが、私はMKDIRが行うように、それはdrwxr-xr-x
でそれを作成したいですか?私はここで間違って何をしていますか?
編集: これは私のための実用的なソリューションです:
右の権限の設定int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
umask値に応じて、自動的に処理されます。だから私は完全なパーミッションでmkdirを呼び出すだけで済み、それは現在のumaskに応じて細かくなります。
診断プリントは何を生成しますか? '%i'の後に改行を追加した方がうまくいくかもしれませんし、'%i'の代わりに '%o'や'%.4o'を使うと読みやすくなります。また、['umask()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html)と['mkdir()']を宣言する '#include' (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html)。 –
これは%4oで22を生成します。 – yasar