當前位置:首頁 » 編程軟體 » 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 瀏覽:467
安卓80跟90哪個好用 發布:2025-01-09 05:55:28 瀏覽:335
原力文件夾 發布: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