關閉 linux下的umask( )函式、setsid( )函式
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int open( const char * pathname, int flags);
int open( const char * pathname,int flags, mode_t mode);
當建立一個檔案並且要明確指定此檔案的許可權時,應該使用第二個open()函式,明確指定mode引數,所建立的檔案最後的許可權是:mode&(~mask)。預設的mask值是:022
例:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd;
// umask(0026);
fd = open("/home/zhangcheng/share/test/test.txt",O_RDWR|O_CREAT,0666);
if(fd < 0)
perror("open");
return 0;
}
則生成的test.txt檔案的許可權是:666&(~026)結果是:-rw-r-----。如果沒有umask(0026);這條語句,則生成的test.txt檔案的許可權是:666&(~022)結果是:-rw-r--r--。注:open函式的mode引數只有在建立檔案時才有效。
setsid( )說明:程式從它的雙親程式獲得它的對話過程和程式組識別號。setsid()就是將程式和它當前的對話過程和程式組分離開,並且把它設定成一個新的對話過程的領頭程式。
pid_t pid = fork();
if (pid == 0) {
...
int result = execl(path, "adb", "fork-server", "server", NULL);
} else {
// run a program in a new session
setsid();//之前parent和child執行在同一個session裡,而且parent是session頭,
//所以作為session頭的parent如果exit結束執行的話,那麼會話session組中的所有程式將都被殺死;
//所以執行setsid()之後,parent將重新獲得一個新的會話session組id,child將仍持有原有的會話session組,
//這時parent退出之後,將不會影響到child了。
}
會話session是一個或多個程式組的集合。程式呼叫setsid函式建立一個新會話。如果呼叫此函式的程式不是一個程式組的組長,則此函式就會建立一個新會話,該程式變成會話的首程式,然後該程式成為一個新程式組的組長程式,該程式沒有控制終端。因為會話首程式是具有唯一程式ID的單個程式,所以可以將會話首程式的程式ID視為會話Id。
sys.c中的建立一個會話的系統呼叫
int sys_setsid(void)
{
...
current->leader = 1;
current->session = current->pgrd = current->pid; //建立該會話的程式號賦值成為會話號
current->tty = -1; //表示該領頭程式沒有控制終端。
...
}
參考原文:http://hi.chinaunix.net/?uid-20693307-action-viewspace-itemid-46100
相關文章
- setsid()函式函式
- linux的umask函式詳解(轉)Linux函式
- 閉包函式(匿名函式)的理解函式
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- 回撥函式 與 函式閉包函式
- JS函式表示式——函式遞迴、閉包JS函式遞迴
- 函式閉包函式
- 閉包函式函式
- 關於linux下system()函式的總結Linux函式
- JS閉包函式和回撥函式JS函式
- 函式物件、裝飾器、閉包函式函式物件
- JavaScript進階系列01,函式的宣告,函式引數,函式閉包JavaScript函式
- linux下C語言中的mkdir函式與rmdir函式LinuxC語言函式
- Linux下getopt函式的使用Linux函式
- linux下的c庫函式Linux函式
- linux下getopt函式的用法Linux函式
- Linux下的時間函式Linux函式
- go 閉包函式Go函式
- js函式閉包JS函式
- 函式下函式
- python 關於 函式物件與閉包Python函式物件
- 學習一下閉包函式 - Closures函式
- JS閉包函式概念JS函式
- JavaScript 匿名函式 閉包JavaScript函式
- Linux下IPC機制實現相關函式Linux函式
- linux下時間有關的函式和結構體Linux函式結構體
- python中的閉包函式Python函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- swift1.2語言函式和閉包函式介紹Swift函式
- 實現關閉程式函式,殺掉pchunter函式
- 關於建構函式與解構函式的分享函式
- Linux下getopt()函式的簡單使用Linux函式
- main函式的入口函式AI函式
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- 字串的相關函式字串函式
- 【函式式 Swift】函式式思想函式Swift
- 理解Python函式閉包Python函式
- 匿名函式和閉包的相關應用詳解函式