中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

做房地產(chǎn)資質(zhì)是什么網(wǎng)站查seo褲子的關鍵詞首頁排名有哪些

做房地產(chǎn)資質(zhì)是什么網(wǎng)站查,seo褲子的關鍵詞首頁排名有哪些,又做投資的網(wǎng)站嗎,s網(wǎng)站建設進程組和會話在 UNIX 系統(tǒng)中是非常重要的概念,特別是在進行作業(yè)控制和終端會話管理時。下面是關于進程組和會話的詳細解釋: 進程組(Process Group) 定義與作用: 進程組是一個或多個進程的集合,這些進程通常…

進程組和會話在 UNIX 系統(tǒng)中是非常重要的概念,特別是在進行作業(yè)控制和終端會話管理時。下面是關于進程組和會話的詳細解釋:

進程組(Process Group)

  1. 定義與作用

    • 進程組是一個或多個進程的集合,這些進程通常是從同一個作業(yè)啟動的,共享同一個進程組標識符(PGID)。例如,一個復雜的命令行管道操作(如 cmd1 | cmd2)中的所有進程可以屬于同一個進程組。
    • 進程組使得操作系統(tǒng)可以方便地對一組相關進程執(zhí)行操作,如發(fā)送信號。
  2. 進程組首進程

    • 每個進程組有一個首進程,這是創(chuàng)建該組的進程,其進程 ID(PID)同時作為該進程組的 ID。
    • 進程組首進程在創(chuàng)建時設置組 ID,并可以通過特定的系統(tǒng)調(diào)用(如 setpgid())修改自己或其他進程的進程組歸屬。
  3. 生命周期

    • 進程組的生命周期從首進程創(chuàng)建該組開始,直到最后一個進程退出該組時結(jié)束。
    • 進程可能會因為終止自身或被其他信號殺死而離開進程組,或者它可以調(diào)用系統(tǒng)函數(shù)切換到另一個進程組。

會話

會話(session)管理是 UNIX 系統(tǒng)中處理進程組和終端交互的重要機制。這里提供對您提到的各個點的更深入的解釋:

會話首進程與會話 ID
  • 會話首進程:創(chuàng)建新會話的進程自動成為該會話的首進程。這通常發(fā)生在用戶登錄時或者當一個進程通過調(diào)用 setsid() 系統(tǒng)調(diào)用來顯式創(chuàng)建一個新會話。
  • 會話 ID:新會話的創(chuàng)建同時生成一個新的會話標識符(session ID),該標識符等于該會話首進程的進程 ID (PID)。新創(chuàng)建的進程會繼承其父進程的會話 ID,除非它們顯式地創(chuàng)建或加入一個新的會話。
控制終端
  • 建立控制終端:控制終端通常在會話首進程首次打開一個終端設備時被建立。控制終端是會話中進程交互的主要方式,如讀取用戶的鍵盤輸入和輸出信息到屏幕。
  • 終端與會話的關系:一個終端設備在任一時間點最多只能是一個會話的控制終端。一旦終端被某個會話首次占用,其他會話將無法將其設置為控制終端。
前臺與后臺進程組
  • 前臺進程組:在任何給定時刻,會話中只有一個進程組可以成為前臺進程組。這個組的進程可以直接從控制終端接收輸入,這對于交互式應用非常關鍵。
  • 后臺進程組:不在前臺的進程組稱為后臺進程組。這些進程組不能直接從控制終端讀取輸入,這樣設計可以避免輸入沖突和管理復雜度。
信號處理與終端字符
  • 終端字符生成信號:用戶在控制終端輸入特定的鍵(如 Ctrl+C)會生成信號(如 SIGINT),這些信號會被發(fā)送到前臺進程組的所有進程。這允許用戶可以直接與運行在前臺的進程組交互,例如中斷正在執(zhí)行的命令。
控制進程
  • 會話首進程的角色:一旦控制終端的連接建立,會話首進程也成為控制進程。這意味著它負責處理來自控制終端的信號和可能的終端斷開(如用戶注銷)。

通過這些機制,UNIX 系統(tǒng)提供了強大的工具來管理和控制多個進程和它們的交互,這對于構(gòu)建穩(wěn)定和可管理的多用戶環(huán)境是必要的。

進程組、會話、控制終端之間的關系

在 UNIX 系統(tǒng)中,進程組、會話和控制終端之間的關系是協(xié)調(diào)進程之間通信和控制的關鍵機制。這些概念相互作用,支持復雜的作業(yè)控制和會話管理,特別是在多用戶環(huán)境中。下面是這些概念之間關系的詳細解釋:

1. 進程組(Process Group)

進程組是一種邏輯分組,用于將一系列相關的進程組織在一起,以便于統(tǒng)一管理。通常情況下,這些進程是從同一個命令行啟動的,比如一個 shell 腳本中的多個命令。進程組內(nèi)的每個進程都共享同一個進程組標識符(PGID),使得操作系統(tǒng)可以方便地對整個組發(fā)送信號。

2. 會話(Session)

會話是一或多個進程組的更高級別的集合。每個會話可以包含多個進程組,包括前臺和后臺進程組。會話通常在用戶登錄時開始,用戶的登錄 shell 成為會話首進程,并且會創(chuàng)建一個新的會話。這個會話首進程有權(quán)申請或分配一個控制終端。

3. 控制終端(Controlling Terminal)

控制終端是會話首進程與用戶交互的界面。它通常是一個物理或虛擬的終端設備(如終端窗口)。會話首進程在首次打開一個終端設備時,該設備成為該會話的控制終端??刂平K端可以被用來向會話中的進程發(fā)送信號(例如,當用戶按下 Ctrl+C 時發(fā)送 SIGINT)。

關系概述:
  • 會話與進程組:會話是進程組的容器,可以包含多個進程組。在一個會話中,可以指定一個進程組作為前臺進程組,其他的則作為后臺進程組。前臺進程組可以接收來自控制終端的輸入,而后臺進程組則不能。
  • 會話與控制終端:會話首進程可以為會話獲取一個控制終端,這個終端成為整個會話及其所有進程組的交互中心??刂平K端可以被用來管理會話中的進程,如發(fā)送中斷信號。
  • 進程組與控制終端:在有控制終端的會話中,只有前臺進程組可以直接從控制終端接收輸入和處理特定的控制信號(如 SIGINT)。后臺進程組則被限制,不能直接讀取控制終端的輸入,以防止輸入輸出沖突。

這種層次和關系的設置使得 UNIX 系統(tǒng)能夠有效地管理多任務操作,特別是在多用戶和網(wǎng)絡環(huán)境中,提供了高度的靈活性和控制能力。

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

進程組、會話操作函數(shù)

在 UNIX 和類 UNIX 系統(tǒng)中,操作進程組和會話的一些核心函數(shù)允許程序員在運行時管理進程的組和會話屬性。這些函數(shù)非常重要,因為它們提供了控制進程如何與操作系統(tǒng)和其他進程交互的能力。

1. 獲取和設置進程組
pid_t getpgrp(void);
  • 描述:此函數(shù)返回當前進程的進程組 ID。
  • 返回值:返回調(diào)用進程的進程組 ID。
pid_t getpgid(pid_t pid);
  • 描述:獲取指定進程的進程組 ID。如果 pid 為 0,則返回調(diào)用進程的進程組 ID。
  • 參數(shù)
    • pid:進程標識符。
  • 返回值:成功時返回進程組 ID,失敗時返回 -1 并設置 errno。
int setpgid(pid_t pid, pid_t pgid);
  • 描述:設置指定進程的進程組 ID。這個函數(shù)可以用來將進程 pid 加入到進程組 pgid,或者創(chuàng)建一個新的進程組(如果 pid 等于 pgid)。
  • 參數(shù)
    • pid:要更改進程組的進程的 ID,如果 pid 是 0,則表示調(diào)用進程。
    • pgid:新的進程組 ID,如果 pgid 是 0,則 pid 指定的進程將成為新進程組的首進程。
  • 返回值:成功時返回 0,失敗時返回 -1 并設置 errno。

2. 獲取和設置會話

pid_t getsid(pid_t pid);
  • 描述:獲取指定進程的會話 ID。如果 pid 為 0,則返回調(diào)用進程的會話 ID。
  • 參數(shù)
    • pid:進程標識符。
  • 返回值:成功時返回會話 ID,失敗時返回 -1 并設置 errno。
pid_t setsid(void);
  • 描述:創(chuàng)建一個新的會話,并設置當前進程為該會話的首進程和進程組首進程。當前進程不能是進程組的領頭進程。
  • 返回值:成功時返回新會話的會話 ID,失敗時返回 -1 并設置 errno。

注意事項

  • 在使用 setpgid()setsid() 時,要注意進程間的權(quán)限和狀態(tài),因為這些調(diào)用可能受到限制,特別是在已經(jīng)擁有子進程或已屬于某個進程組的情況下。
  • 調(diào)用 setsid() 時,如果調(diào)用者已是某個進程組的領頭進程,則該調(diào)用會失敗。這是為了防止一個已有控制終端的進程逃避終端產(chǎn)生的信號。

這些函數(shù)提供了在 UNIX 類操作系統(tǒng)中管理和控制進程組和會話的基本機制,對于實現(xiàn)作業(yè)控制、守護進程以及終端會話管理等功能至關重要。

守護進程

守護進程(Daemon process)是 Linux 系統(tǒng)中一個非常核心的概念,對于系統(tǒng)的穩(wěn)定運行和服務的持續(xù)提供至關重要。這些進程通常是在系統(tǒng)啟動時啟動,并在整個系統(tǒng)運行期間持續(xù)運行,直到系統(tǒng)關閉。下面詳細解釋守護進程的特征和其實現(xiàn)方法:

特征
  1. 長生命周期

    • 守護進程通常在系統(tǒng)啟動時創(chuàng)建,例如通過系統(tǒng)的初始化系統(tǒng)(如 systemd、init)自動啟動。
    • 它們不會像交互式用戶進程那樣在任務完成后退出,而是一直運行,直到系統(tǒng)關閉。
  2. 在后臺運行

    • 守護進程通常在后臺運行,不與任何用戶直接交互。
    • 它們通常不擁有控制終端,這防止了終端信號(如 SIGINT 或 SIGQUIT)意外中斷它們的運行。
  3. 服務性質(zhì)

    • 守護進程通常執(zhí)行周期性任務或等待特定事件的發(fā)生,例如監(jiān)聽網(wǎng)絡請求或文件系統(tǒng)變化。
    • 例如,HTTP 服務器(如 Apache 的 httpd)、郵件服務器(如 postfix)和文件服務器(如 smbd)都是典型的守護進程。
實現(xiàn)守護進程

這個過程是在 UNIX 和 Linux 系統(tǒng)中常用的模式,用于創(chuàng)建獨立于控制終端的后臺服務。以下是如何執(zhí)行這個轉(zhuǎn)換的詳細步驟,包括其中涉及的各個系統(tǒng)調(diào)用和目的:

1.創(chuàng)建子進程并結(jié)束父進程

這個步驟確保了新的守護進程不是一個會話領導者,從而可以調(diào)用 setsid() 創(chuàng)建新會話。

pid_t pid = fork();
if (pid < 0) {// 處理錯誤exit(EXIT_FAILURE);
}
if (pid > 0) {// 父進程直接退出exit(EXIT_SUCCESS);
}
2. 創(chuàng)建新會話

子進程調(diào)用 setsid() 創(chuàng)建一個新的會話,成為會話的領導者,脫離任何控制終端。

if (setsid() < 0) {// 處理錯誤exit(EXIT_FAILURE);
}
3. 清除文件創(chuàng)建掩碼(umask)(非必須)

設置 umask 為 0 確保守護進程創(chuàng)建的任何文件和目錄都有適當?shù)脑L問權(quán)限。

umask(0);
4. 更改當前工作目錄

將當前工作目錄改為根目錄 /,這可以防止守護進程阻止卸載文件系統(tǒng)。

if (chdir("/") < 0) {// 處理錯誤exit(EXIT_FAILURE);
}
5. 關閉所有繼承的文件描述符

這可以防止守護進程無意中保持打開的文件描述符,可能導致資源泄露或不必要的行為。

int x;
for (x = sysconf(_SC_OPEN_MAX); x >= 0; x--) {close(x);
}
6. 重定向標準文件描述符到 /dev/null

關閉了標準輸入、輸出和錯誤(文件描述符 0, 1, 2)后,常見做法是打開 /dev/null 并用 dup2() 使得這些描述符指向 /dev/null。這樣,任何嘗試讀寫這些文件描述符的操作都不會有任何效果。

int fd = open("/dev/null", O_RDWR);
dup2(fd, 0); // STDIN
dup2(fd, 1); // STDOUT
dup2(fd, 2); // STDERR
7. 執(zhí)行核心業(yè)務邏輯

在完成所有的設置后,守護進程可以開始執(zhí)行其核心功能,如周期性檢查、處理請求等。

while (1) {// 執(zhí)行任務sleep(1); // 休眠是為了模擬周期性任務
}

以上步驟創(chuàng)建了一個完全獨立的守護進程,它在系統(tǒng)后臺安靜地運行,幾乎不受用戶會話影響,適用于需要長時間運行并且不需要用戶交互的服務。這種類型的進程是服務器和服務架構(gòu)的基礎。

案例
/*寫一個守護進程,每隔2s獲取一下系統(tǒng)時間,將這個時間寫入到磁盤文件中。
*/#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/time.h>
#include <signal.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>void work(int num) {// 捕捉到信號之后,獲取系統(tǒng)時間,寫入磁盤文件time_t tm = time(NULL);struct tm * loc = localtime(&tm);// char buf[1024];// sprintf(buf, "%d-%d-%d %d:%d:%d\n",loc->tm_year,loc->tm_mon// ,loc->tm_mday, loc->tm_hour, loc->tm_min, loc->tm_sec);// printf("%s\n", buf);char * str = asctime(loc);int fd = open("time.txt", O_RDWR | O_CREAT | O_APPEND, 0664);write(fd ,str, strlen(str));close(fd);
}int main() {// 1.創(chuàng)建子進程,退出父進程pid_t pid = fork();if(pid > 0) {exit(0);}// 2.將子進程重新創(chuàng)建一個會話,新的會話會脫離原來的控制終端setsid();// 3.設置掩碼umask(022);// 4.更改工作目錄chdir("/home/nowcoder/");// 5. 關閉、重定向文件描述符int fd = open("/dev/null", O_RDWR);dup2(fd, STDIN_FILENO);dup2(fd, STDOUT_FILENO);dup2(fd, STDERR_FILENO);// 6.業(yè)務邏輯// 捕捉定時信號struct sigaction act;act.sa_flags = 0;act.sa_handler = work;sigemptyset(&act.sa_mask);sigaction(SIGALRM, &act, NULL);struct itimerval val;val.it_value.tv_sec = 2;val.it_value.tv_usec = 0;val.it_interval.tv_sec = 2;val.it_interval.tv_usec = 0;// 創(chuàng)建定時器setitimer(ITIMER_REAL, &val, NULL);// 不讓進程結(jié)束while(1) {sleep(10);}return 0;
}
http://m.risenshineclean.com/news/59169.html

相關文章:

  • 建設公積金網(wǎng)站蘇州做網(wǎng)站的專業(yè)公司
  • 廣州市網(wǎng)站建設制作費用站長全網(wǎng)指數(shù)查詢
  • 2017自己做網(wǎng)站的趨勢seo站長
  • 學做網(wǎng)站網(wǎng)百度網(wǎng)訊科技有限公司官網(wǎng)
  • 長沙企業(yè)做網(wǎng)站百度一下你就知道官網(wǎng)網(wǎng)址
  • 如何制作香水 簡單seo交流論壇seo顧問
  • 網(wǎng)站維護步驟優(yōu)化營商環(huán)境存在問題及整改措施
  • 一元購網(wǎng)站建設多少錢seo自學教程seo免費教程
  • 河北seo推廣方案seo免費優(yōu)化網(wǎng)址軟件
  • 南充做網(wǎng)站公司哪家好營銷型網(wǎng)站推廣
  • 圖書館網(wǎng)站建設的建議免費信息推廣平臺
  • 企業(yè)做網(wǎng)站的發(fā)票怎樣入賬網(wǎng)頁設計框架圖
  • 醫(yī)院網(wǎng)站建設 價格網(wǎng)站免費搭建
  • 騰訊云服務器上傳網(wǎng)站b站視頻推廣網(wǎng)站2023
  • 光谷做網(wǎng)站推廣怎么樣百度模擬點擊軟件判刑了
  • 江西省建設監(jiān)督網(wǎng)站收錄
  • 動態(tài)網(wǎng)站開發(fā)常用技術(shù)龍網(wǎng)網(wǎng)絡推廣軟件
  • 在哪做網(wǎng)站便宜又好關鍵詞優(yōu)化步驟簡短
  • 廣州海珠發(fā)布seo排名軟件
  • 安裝wordpress報404錯誤網(wǎng)站seo專員
  • 蘇州做門戶網(wǎng)站的公司免費注冊推廣網(wǎng)站
  • 成都微信公眾號外包seo診斷工具有哪些
  • 自適應網(wǎng)站平臺西安seo網(wǎng)絡推廣
  • 重慶建站管理系統(tǒng)信息seox
  • 海曙網(wǎng)站建設網(wǎng)站海南網(wǎng)站網(wǎng)絡推廣
  • 上海小企業(yè)網(wǎng)站建設資源企業(yè)網(wǎng)站排名優(yōu)化價格
  • 無錫高端網(wǎng)站設計制作白嫖永久服務器
  • 網(wǎng)站建設合同范本下載外貿(mào)網(wǎng)站谷歌seo
  • 衡水做wap網(wǎng)站推廣圖片制作
  • 在美國注冊一個網(wǎng)站 大陸做銷售品牌推廣活動策劃案例