第七章 程序控制及其操作 二

2021-08-04 16:46:18 字數 1974 閱讀 2086

接上一章,在進行了程序最後部分的學習後,現將程序最後部分的知識進行總結學習

同時會附上進行my_shell專案文件實現的經驗

一,程序的其他操作

本部分是一些程序的其他操作,雖然不如程序操作的部分重要,但是還是有很重要的意義

1.獲取程序id

程序id,是程序的標識之一,程序id(即pid)的重要性不言而喻

而且,通過程序id,方便對程序進行其他的操作

#incldue

#incldue

pid_t getpid(void) //獲取當前程序id

pid_t getppid(void) //獲取當前程序父程序id

另外還有獲取程序實際使用者,有效使用者的函式,在之前已經提到過,此處不再贅述

2.setuid與setgid

看過《鳥哥的linux私房菜》的同學,可能對這兩個概念了解的比較好一點

簡而言之,這兩個函式,使用來處理程式中對使用者許可權的處理問題

#include

#include

int setuid(uid_t uid)

itn setgid(gid_t gid)

其中需要謹慎處理的是,root許可權的問題

因為,一旦用root許可權去處理,則最後會將uid與gid進行修改,最後會導致失去root許可權的問題出現

下面來看乙個簡單的例子

#include

#include

#include

#include

#include

int main(int argc,char **argv)

上面例子的結果

此即為檔案許可權的問題

3.改變程序的優先順序

改變程序的優先順序,是用來將常用,頻繁的程序的優先順序提高,換句話來說,就是提高計算機的效率

需要掌握的有三個函式

#incldue

int nice(int increment);

#incldue

int getpriority(int which,int who);

int setpriority(int which,int who,int prio);

具體示例,還請自行進行測試

二,my_shell經驗分享

程序的知識,暫時告一段落,在此處,我想要和大家分享的是my_shell專案實踐經驗

我先放出,我的原始碼,以及專案文件

傳送門

想要分享的經驗如下:

進行編碼前,多思考,多考慮,盡量考慮周到一點

多和別人交流,會有意想不到的收穫

現在是技術上的分享

關於守護程序,建立出乙個脫離當前shell環境的程序,使用守護程序,算是後台程序的一種

訊號的實現,使用signal系列函式signal(sigchld,sig_ign)

經過我親身經歷,makefile真的很有用,用了都說好,而且還能裝逼(滑稽->

path環境變數的設定,注意/etc/profile 與~/.bash_profile,的區別,並且學會如何修改環境變數

以上即為我的分享,有不足的地方還請大家指出,

下次會進行執行緒控制的分享(有機會一定補上檔案操作的坑)

第七章 程序環境

1.main 函式 c程式總是從main函式開始執行的。main函式的原型是 int main int argc,char argv 其中,argc是命令列引數的數目,argv是指向引數的各個指標構成的陣列。當核心執行c程式時 使用乙個exec函式 在呼叫main前先呼叫乙個特殊的啟動例程。可執行程...

第七章 程序間通訊

第七章 程序間通訊 1 程序間通訊簡介 多個程序之間相互通訊 交換資訊的方法 方法 1 本地程序通訊 共享記憶體 訊號量 管道 命名管道 訊息佇列 2 遠端通訊 套介面 全雙工管道 2 共享記憶體和訊號量 1 共享記憶體 通過兩個或多個程序共享同一塊記憶體區域實現程序間通訊 最底層的通訊機制,最快速...

第七章 程序排程 介紹

7.2 排程指標 t周轉時間 t完成時間 t到達時間 7.3 先進先出 fifo example 1 工作平均周轉時間為 10 20 30 3 20 example 2 工作平均周轉時間為 100 110 120 3 120 7.4 最短任務優先 sjf example 1 工作平均周轉時間為 10...