Tôi đang cố gắng viết một chương trình C đơn giản tạo thư mục (bản sao mkdir.). Đây là những gì tôi có cho đến nay:Làm thế nào để tạo thư mục với các quyền bằng cách sử dụng C trên Posix
#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;
}
Mã này tạo thư mục với d---------
nhưng tôi muốn nó tạo ra nó với drwxr-xr-x
như mkdir làm gì? Tôi làm gì sai ở đây?
Edit: Đây là giải pháp làm việc cho tôi:
int main(int argc, const char *argv[])
{
if (mkdir("trial",0777) == -1) {
perror(argv[0]);
exit(EXIT_FAILURE);
}
return 0;
}
quyền hạn Thiết lập theo umask được tự động xử lý. Vì vậy, tôi chỉ cần gọi mkdir với đầy đủ các quyền và bị cắt nhỏ theo umask hiện tại.
In chẩn đoán tạo ra những gì? Nó có thể làm việc tốt hơn nếu bạn thêm một dòng mới sau '% i', và nó sẽ dễ đọc hơn nếu bạn sử dụng'% o' hoặc '% .4o' thay vì'% i'. Ngoài ra, bạn dường như bị thiếu '#include' khai báo ['umask()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html) và ['mkdir()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html). –
Nó tạo ra 22 với% 4o. – yasar