在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 創(chuàng)建目錄權(quán)限
信號
創(chuàng)建目錄權(quán)限
示例程序
進(jìn)程的定義
Hello World進(jìn)程
創(chuàng)建進(jìn)程
進(jìn)程鎖
第四章 項目實例Run
Nohup命令
PID
前言
系統(tǒng)調(diào)用sendfile
進(jìn)程參數(shù)
參考書籍
后記
進(jìn)程狀態(tài)
本書概述
寫時復(fù)制(Copy On Write)
Docker簡介
第五章 注意事項
實現(xiàn)Run
孤兒進(jìn)程概念
共享內(nèi)存
衍生(Spawn)新進(jìn)程
PPID
第三章 進(jìn)程進(jìn)階
退出碼
簡介
進(jìn)程文件
Thanks for reading!
項目學(xué)習(xí)
第一章 進(jìn)程基礎(chǔ)
僵尸進(jìn)程
系統(tǒng)調(diào)用
POSIX簡介
執(zhí)行(Exec)外部程序
文件描述符
進(jìn)程名字
進(jìn)程輸入與輸出
Cgroups
進(jìn)程間通信
查看PID
死鎖概念
進(jìn)程越多越好?
Run項目架構(gòu)
  • 1.
復(fù)制(Fork)進(jìn)程
第二章 Go編程實例
活鎖概念
守護(hù)(Daemon)進(jìn)程
并發(fā)與并行
捕獲SIGKILL
Namespaces簡介

創(chuàng)建目錄權(quán)限

創(chuàng)建目錄權(quán)限

如果你想創(chuàng)建一個目錄并授予777權(quán)限,你需要怎么做?查看Go的API文檔我們可以這樣寫。

源文件為mkdir.go。

package main

import (
  "fmt"
  "os"
)

func main() {
    err := os.MkdirAll("/tmp/gotest/", 0777)
    if err != nil {
      panic(err)
    }

    fmt.Println("Mkdir /tmp/gotest/")
}

運行結(jié)果

?  understand_linux_process_examples git:(master) ? ll /tmp/
drwxr-xr-x   2 tobe  wheel    68B Dec 30 10:06 gotest
?  understand_linux_process_examples git:(master) ? umask
022

正確做法

代碼在mkdir_umask.go中。

package main

import (
  "fmt"
  "os"
  "syscall"
)

func main() {
    mask := syscall.Umask(0)
    defer syscall.Umask(mask)

    err := os.MkdirAll("/tmp/gotest/", 0777)
    if err != nil {
      panic(err)
    }

    fmt.Println("Mkdir /tmp/gotest/")
}

注意事項

這并不是Go的Bug,包括Linux系統(tǒng)調(diào)用都是這樣的,創(chuàng)建目錄除了給定的權(quán)限還要加上系統(tǒng)的Umask,Go也是如實遵循這種約定。

如果你想達(dá)到你的預(yù)期權(quán)限,知道Umask及其用法是必須的。