實驗2 Linux程序管理

2021-10-11 05:29:49 字數 3386 閱讀 4331

列印當前所有環境變數的值;

新增新的環境變數newenv=first;

修改環境變數newenv的值為second;

列印環境變數newenv的值。

#include

#include

#include

#include

extern

char

**environ;

intmain()

putenv

("newenv=first");

char

*str;

str =

getenv

("newenv");

printf

("the newenv is: %s\n"

,str);if

(setenv

("newenv"

,"second",1

)<0)

perror

("setenv");

str =

getenv

("newenv");

printf

("the newenv is: %s\n"

,str)

;return0;

}

執行截圖

列印字串「hello world!」

在列印字串「hello world!」前呼叫三次fork,分析列印結果。

#include

#include

#include

#include

intmain()

執行截圖

結果分析

我們在編寫程式之前,我們先分析一下,應該會列印出幾個「hello world」。

首先我們要了解fork函式的工作機制。首先,呼叫一次fork函式會返回兩個返回值,父程序會返回子程序的pid,子程序會返回0。

父子程序都會執行fork函式下的第一條語句。

父子程序的執行順序是不確定的,取決於作業系統的排程。

綜上所訴,呼叫三次fork數後,將會列印八個「hello world」。

建立子程序

在子程序中開啟檔案file1,寫入自己的「班級_姓名_學號」,

父程序讀取file1中的內容,並且列印顯示。

在父程序中獲取已經結束的子程序的狀態資訊,列印該資訊,並且列印結束的子程序的程序號。

#include

#include

#include

#include

#include

intmain()

else

return0;

}

執行截圖

在父程序中定義變數n,在子程序中對變數n進行++操作;並且列印變數n的值,列印子程序pid;

在父程序中列印變數n的值,並且列印父程序pid。

要求分別用fork和vfork建立子程序。

fork.c

#include

#include

#include

#include

intmain()

else

return0;

}

vfork.c

#include

#include

#include

intmain()

else

return0;

}

執行截圖

程式結果分析:

假設變數n的值為1,在vfork函式中,父程序列印的n值是2,而fork函式中的父程序列印的n值是1。

建立子程序一,在子程序中遞迴列印/home目錄中的內容(用exec系列函式呼叫第二次實驗中的**完成此功能);

子程序結束的時候完成以下功能:

列印字串「child process exited!」

列印子程序識別符號,列印父程序識別符號。

建立子程序二, 列印子程序執行環境中環境變數「user」的值,通過exec系列中的某個函式設定子程序」user」環境變數值為「zhangsan」,並且讓該子程序完成以下命令:「ls –li /home」.

a1.c

#include

#include

#include

#include

void

test1

(void

)void

test2

(void

)int

main()

else

return0;

}

a2.c

#include

#include

#include

void

fun(

void

)int

main()

}else

;char

*p; p =

getenv

("user");

if(p)

system

("ls -li /home");

if((execle

("/bin/env"

,"env"

,null

,env)

)<0)

perror

("execle");

exit(1

);}}

return0;

}

執行截圖

實驗2 Linux下基本程式設計

實驗2 linux下基本程式設計 一 實驗目的 1.掌握vim編譯器 2.掌握gcc編譯器的使用 3.了解fork 程式 二 實驗工具與裝置 1 實驗裝置 計算機 帶cd rom 一台。三 實驗預備知識 1.vim的編輯器 vim有三種模式 命令模式 插入模式 最後行模式。命令模式 剛啟動vim後,...

2Linux記憶體布局

變數名稱 說明 num physpages 最高可用頁框的頁框號 totalram pages 可用頁框的總數量 min low pfn ram 中在核心映像後第乙個可用頁框的頁框號 max pfn 最後乙個可用頁框的頁框號 max low pfn 被核心直接對映的最後乙個頁框的頁框號 低位址記憶體...

安全2 Linux基礎

ls ls a ls l l c b d link 裝置 塊 目錄 sort size time cd cd 目錄 cd 返回上一層 cat more less cat 檔案路徑 檢視檔案,全部顯示 more 檢視檔案,顯示乙個頁面,顯示百分比 less 檢視檔案,顯示乙個頁面,不顯示百分比 tai...