接上一章,在進行了程序最後部分的學習後,現將程序最後部分的知識進行總結學習
同時會附上進行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...