linuxdo
❶ linux下 while["$x"-1e 10];do的意思是什麼
當x這個變數小於等於10的時候,繼續循環。做do與done之間的工作。
❷ linux內核中有很多dowhile語句,試著分析有何作用
在linux內核跟進程虛擬內存有關的數據結構主要有兩個:structmm_struct與structvm_area_struct,至於兩個之間關系,你可以參見內核源碼,因為是作業,我就點到此了。
❸ do和linux系統哪個好
do 是什麼系統?
如果是 dos ,那麼 還是 linux好
不過 linux比 dos要復雜
你到底要做什麼用呢?
❹ 看Linux內核源代碼時候出現很多類似do {xxxx} while(0)的用法,到底有什麼用
do{ } while() 是先執行一次再判斷條件。所有每當引用這個宏時,操作就回執行這個do{ }一次,而且只執行一次!這樣能很好的避免在宏展開是出錯。
例如這樣一段代碼: #define haha(a,b) do{strcpy(a,b); c += 1;} while(0)
如果定義成這樣 #define haha(a,b) strcpy(a,b); c += 1; 意思一樣,但是不行!因為如果在一個if語句中引用這個宏就回出現問題。假設:
if(a)
haha(a,b);
else
do_something_else();
經過預處理後,代碼成為這樣:
if(a)
strcpy(a,b); c += 1;
else
do_something_else();
gcc編譯這段代碼時會出錯,因為gcc認為if語句在strcpy()以後就結束了,但是又遇到一個else!如果把haha(a,b)和do_something_else()對換一下位置,編譯沒有問題,但是問題更嚴重了,因為不管條件是否滿足,c+=1都會執行一次。
你可以自己驗證,在define定義中加上{ }號還是會有問題。相比之下,在任何情況下do-while語句都不會出現問題。
❺ linux中while/do/done用法,
#!/bin/bash
echo "Enter password:"
read TRY
COUNTER=1
while [ "$COUNTER" -lt 5 -a "$TRY" != "secret" ]; do
echo "Here we go again"
COUNTER=$(($COUNTER+1))
read TRY
done
[ "$TRY" != "secret" ] && echo "error!"
❻ linux下檢測內存的命令 do pmap
用 man pmap 查看幫助,
pmap - report memory map of a process
-x extended Show the extended format.
可見,pmap可用來獲取一個指定進程的內存映射表,-x 選項的含義是指明以詳細格式顯示這些信息。
tail -1 就是提取所以這些pmap返回信息的最後一行(tail就是尾巴的意思啊)。你可以試試在命令行里敲 pmap -x 13894 這個命令,回顯信息的最後一行就是total的內存統計信息。
用一個while循環來不斷檢測,其實就是在一直監視著13894這個進程的內存佔用情況。
❼ 什麼是linux他的作用又是什麼
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。
嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和資料庫的操作系統。
作用:
1、它能運行主要的UNIX工具軟體、應用程序和網路協議。
2、它支持32位和64位硬體。
3、Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
(7)linuxdo擴展閱讀:
linux特性:
1、完全免費
Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其源代碼。這是其他的操作系統所做不到的。
2、完全兼容POSIX1.0標准
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。
3、多用戶、多任務
Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時並獨立地運行。
4、良好的界面
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。
5、支持多種平台
Linux可以運行在多種硬體平台上,如具有x86、680x0、SPARC、Alpha等處理器的平台。此外Linux還是一種嵌入式操作系統,可以運行在掌上電腦、機頂盒或游戲機上。2001年1月份發布的Linux 2.4版內核已經能夠完全支持Intel 64位晶元架構。
❽ linux0.11版本中,關於函數do_timer的疑問
void do_timer (long cpl){
...
fn = next_timer->fn;
next_timer->fn = NULL;
next_timer = next_timer->next;
(fn)();
...
}
這個函數中的函數指針是在函數void add_timer(long jiffies, void (*fn)(void))中添加的。這個函數是供內核使用的,用戶空間的函數是不能調用add_timer的,也就是說 do_timer (long cpl)函數中的函數指針只會指向內核裡面的函數。
(我去看了linux0.11的源碼,用的地方確實只有
Floppy.c (kernel\blk_drv): add_timer(2,&transfer);
Floppy.c (kernel\blk_drv): add_timer(ticks_to_floppy_on(current_drive),&floppy_on_interrupt);
Sched.c (kernel):void add_timer(long jiffies, void (*fn)(void))
Sched.h (include\linux):extern void add_timer(long jiffies, void (*fn)(void));
)
所以的你的「內核不能直接訪問用戶空間函數問題」是不存在的。
我也是看到了http://bbs.chinaunix.net/thread-3727536-1-1.html這個帖子才想到的。
剛開始學這個,可能說的不對,多包涵。
❾ linux下的命令都是干什麼用的
前三個和最後一個是兩個類型。前三個主要是Linux用來創建新的進程(線程)而設計的,exec()系列函數則是用來用指定的程序替換當前進程的所有內容。所以exec()系列函數經常在前三個函數使用之後調用,來創建一個全新的程序運行環境。Linux用init進程啟動其他進程的過程一般都是這樣的。
下面說fork、vfork和clone三個函數。這三個函數分別調用了sys_fork、sys_vfork、sys_clone,最終都調用了do_fork函數,差別在於參數的傳遞和一些基本的准備工作不同。可見這三者最終達到的最本質的目的都是創建一個新的進程。在這里需要明確一下,Linux內核中沒有獨立的「線程」結構,Linux的線程就是輕量級進程,換言之基本控制結構和Linux的進程是一樣的(都是通過struct task_struct管理)。
fork是最簡單的調用,不需要任何參數,僅僅是在創建一個子進程並為其創建一個獨立於父進程的空間。fork使用COW(寫時拷貝)機制,並且COW了父進程的棧空間。
vfork是一個過時的應用,vfork也是創建一個子進程,但是子進程共享父進程的空間。在vfork創建子進程之後,父進程阻塞,直到子進程執行了exec()或者exit()。vfork最初是因為fork沒有實現COW機制,而很多情況下fork之後會緊接著exec,而exec的執行相當於之前fork復制的空間全部變成了無用功,所以設計了vfork。而現在fork使用了COW機制,唯一的代價僅僅是復制父進程頁表的代價,所以vfork不應該出現在新的代碼之中。在Linux的manpage中隊vfork有這樣一段話:It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics of vfork() as it will, in that case, be made synonymous to fork(2)."
clone是Linux為創建線程設計的(雖然也可以用clone創建進程)。所以可以說clone是fork的升級版本,不僅可以創建進程或者線程,還可以指定創建新的命名空間(namespace)、有選擇的繼承父進程的內存、甚至可以將創建出來的進程變成父進程的兄弟進程等等。clone和fork的調用方式也很不相同,clone調用需要傳入一個函數,該函數在子進程中執行。此外,clone和fork最大不同在於clone不再復制父進程的棧空間,而是自己創建一個新的。
關於Linux命令的介紹,看看《linux就該這么學》,具體關於這一章地址3w(dot)linuxprobe/chapter-02(dot)html