使用C语言开发,我想编写一个函数,使用函数int mkdir(const char *pathname, mode_t mode)
创建具有特定权限的路径。我对一个可行的解决方案不感兴趣(我知道该怎么做),我对正确的解决方案感兴趣,这是一种良好实践的解决方案。
我的问题如下:
我想到了两个解决方案:
int create_path(char *pathname, mode_t mode, mode_t umask_wanted)
{
mode_t old_mask = umask(umask_wanted);
mkdir(pathname, mode);
umask(old_mask);
}
或者
int create_path(char *pathname, mode_t mode)
{
mode_t old_mask = umask(0);
mkdir(pathname, mode);
umask(old_mask);
}
或者为不同的面具创建不同的功能,以确保该功能的用户真正意识到他的所作所为。
还是其他什么?
这是一段显示解决方案的代码,但它可能会退出天真。
int create_path(char *pathname, mode_t mode)
{
int i;
char* path = malloc(strlen(pathname) + 1);
if (path==0)
strcpy(path, pathname);
for(i=0; path[i] != '\0'; i++)
{
if (path[i] == '/')
{
path[i] = '\0';
mkdir(path, mode);
path[i] = '/';
}
}
free(path);
}
这是一种良好做法的解决方案吗?或者更好的主意?
我们是否应该更改现有文件夹的权限以适应指定的模式?
或者我们应该只在它提供更多许可的情况下进行更改吗?
注意:这些代码只是举例说明我的问题。对于该解决方案,我将管理mkdir
的错误并将所有这些错误混合在一个函数中。
注2:我假设函数的用户知道他做了什么以及他需要什么样的权限; - )