当前位置:首页 » 编程软件 » 0777编程

0777编程

发布时间: 2025-01-08 13:50:04

A. Linuxmkdir函数mode权限设置方法

前几天用C操作Linux目录时,遇到几个mkdir小问题,顺带总结一下,在Linux上操作文件或目录,遇到最多的可能就是权限问题了,都是显式错误,所以这些问题在开发阶段就很容易暴露和解决。毕竟不是只做Linux平台开发,所以过些日子说不准又会忘记了mkdir的函数原型(使用时需包含#include stat.h>):

int mkdir(const char *path, mode_t mode);

参数:

path——目录名,比如abc,/var/www/abc等

mode——目录权限

返回值:

返回0 表示成功, 返回 -1表示错误,并且会设置errno值。

关于Mode定义,请参考:http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html

当然你也可以不用那些类似S_IRWXU、S_IRUSR...类似的宏参数,毕竟很难记忆,反倒不如8进制的0421好记。组合样式为:owner-group-others,不同人都分三个规则读-写-执行(r-w-x),全部许可就是7。

1、编程时使用mkdir("test",777)报错
试一下:

mkdir("test",0777);

写成mkdir("test",777)有可能无法执行。但是依稀记得,以前都是用777的也没错误,具体忘记了,反正按照规范写绝对没错。

2、umask命令使用
另外假设你的程序目录在/root/abc/下,那么如果你的程序执行时想在/var/www下创建目录时,有可能你始终创建一个0777的目录总是创建成0755目录,这时可以尝试使用umask(0)命令。

umask只对当前目录有效,默认umask值为0022,所以你无法在另外一个地方直接创建0777的目录。

而是0777-0022=0755

3、如何创建某个用户组的文件夹
/etc/passwd和/etc/group找到UID和gid

mkdir /var/ugroup

我们可以直接使用chown来改变文件所有者。

chown root:newuser /var/ugroup

修改权限

chmod 740 /var/ugroup/*

4、察看创建后目录权限情况命令:
定位到该用户组目录下,执行:

ls -all

会显示类似:

drwxrwxr-x

这样的结果(0775)。
转载自 天缘博客

B. python编程中 os.mkfifo()和os.mknod()函数具体用法最好有例子,里面参数具体怎么配置就能创建管道或节

mkfifo函数使用
[code]mkfifo(建立实名管道)
相关函数
pipe,popen,open,umask
表头文件
#include
#include
定义函数
int mkfifo(const char * pathname,mode_t mode);
函数说明
mkfifo() 会依参数pathname建立特殊的FIFO文件,该文件必须不存在,而参数mode为该文件的权限(mode%~umask),因此 umask值也会影响到FIFO文件的权限。Mkfifo()建立的FIFO文件其他进程都可以用读写一般文件的方式存取。当使用open()来打开 FIFO文件时,O_NONBLOCK旗标会有影响
1、当使用O_NONBLOCK 旗标时,打开FIFO 文件来读取的操作会立刻返回,但是若还没有其他进程打开FIFO 文件来读取,则写入的操作会返回ENXIO 错误代码。
2、没有使用O_NONBLOCK 旗标时,打开FIFO 来读取的操作会等到其他进程打开FIFO文件来写入才正常返回。同样地,打开FIFO文件来写入的操作会等到其他进程打开FIFO 文件来读取后才正常返回。
返回值
若成功则返回0,否则返回-1,错误原因存于errno中。
错误代码
EACCESS 参数pathname所指定的目录路径无可执行的权限
EEXIST 参数pathname所指定的文件已存在。
ENAMETOOLONG 参数pathname的路径名称太长。
ENOENT 参数pathname包含的目录不存在
ENOSPC 文件系统的剩余空间不足
ENOTDIR 参数pathname路径中的目录存在但却非真正的目录。
EROFS 参数pathname指定的文件存在于只读文件系统内。

示例1:
#include
#include
#include
#include

int main(void)
{
char buf[80];
int fd;
unlink( "zieckey_fifo" );
mkfifo( "zieckey_fifo", 0777 );

if ( fork() > 0 )
{
char s[] = "Hello!\n";
fd = open( "zieckey_fifo", O_WRONLY );
write( fd, s, sizeof(s) );
//close( fd );
}
else
{
fd = open( "zieckey_fifo", O_RDONLY );
read( fd, buf, sizeof(buf) );
printf("The message from the pipe is:%s\n", buf );
//close( fd );
}

return 0;
}
执行
hello!

示例2:
#include
#include
#include
#include
#include

int main( int argc, char **argv )
{
mode_t mode = 0666;
if ( argc !=2 )
{
printf( "Usage:[%s] fifo_filename\n", argv[0] );
return -1;
}

if (mkfifo( argv[1], mode)<0 )
{
perror( "mkfifo");
return -1;
}

return 0;
} [/code]

C. php怎么自定义mkdir创建目录

PHP中,mkdir函数的功能是创建目录。如果想自定义,或者个性化设计创建目录,可以将该函数封装到方法中,然后调用方法来创建目录。具体操作步骤如下:

  1. 自定义,创建目录方法;

/**
*自定义目录创建方法
*@paramString$path目录路径
*@paramboolean$level多级目录(true:是;false:否)
*@paramboolean$cn目录名称是否存在中文(true:是;false:否)
*@returnboolean
*/
functioncreate_dir($path,$level=false,$cn=false){
//首先判断是否存在该目录
if(is_dir($path)){
returnfalse;
}
//判断判断要创建的目录是否存在中文
if($cn){
$path=mb_convert_encoding($path,"GBK","UTF-8");
$result=mkdir($path,0777,$level);
}else{
$result=mkdir($path,0777,$level);
}
if($result){
returntrue;
}else{
returnfalse;
}

}

2.调用方法测试:

<?php
header("Content-type:text/html;charset=utf-8;");
$path="chinawinxp/web/php编程示例";
$is=create_dir($path,true,true);
if($is){
echo"目录创建成功!";
}else{
echo"目录创建失败,或者目录已存在!";
}

运行结果:

热点内容
安卓的系统在哪个文件里 发布:2025-01-09 06:06:10 浏览:818
室内光源如何配置 发布:2025-01-09 06:01:21 浏览:428
怎么加密服务器上的文档 发布:2025-01-09 05:56:22 浏览:465
安卓80跟90哪个好用 发布:2025-01-09 05:55:28 浏览:333
原力文件夹 发布:2025-01-09 05:51:44 浏览:127
php写入文本 发布:2025-01-09 05:45:00 浏览:879
考研编程作品 发布:2025-01-09 05:35:00 浏览:332
安卓相册哪个好看 发布:2025-01-09 05:16:01 浏览:983
java分析数据 发布:2025-01-09 05:16:00 浏览:853
视频md5加密 发布:2025-01-09 05:08:59 浏览:927