Giriş
umask uygulamadan çalıştırılan mkdir() çağrısına etki eder ve verilen hakların bir kısmını siler.
umask uygulamadan çalıştırılan mkdir() çağrısına etki eder ve verilen hakların bir kısmını siler.
umask komut satırından çalıştırılan chmod çağrısına etki eder ve verilen hakların bir kısmını siler.
Nedense uygulamadan çalıştırılan chmod() çağrısına etki etmiyor.
Benim bilgisayarımda umask yazınca terminalde çıktı olarak "002" alıyorum.
umask 022 olsun. Şu kodu çalıştırılalım
Şöyle yaparız.
Şöyle yaparız.
Benim bilgisayarımda umask yazınca terminalde çıktı olarak "002" alıyorum.
umask 022 olsun. Şu kodu çalıştırılalım
#include <sys/stat.h>
#include <sys/types.h>
int main () {
mkdir("/tmp/mkdir-test", 0777);
return 0;
}
stat yaparsak çıktı olarak şunu alırız.# stat /tmp/mkdir-test
...
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
...
Çözüm 1 - umask çağrısıŞöyle yaparız.
mode_t old_mask = umask(0);
mkdir("/tmp/mkdir-test", 0777);
umask(old_mask);
Çözüm 2 - chmod çağrısıŞöyle yaparız.
const char *dirname = "/tmp/mkdir-test";
if (mkdir(dirname, 0777) == 0)
chmod(dirname, 0777);