九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網! | 幫助中心 裝配圖網zhuangpeitu.com!
裝配圖網
ImageVerifierCode 換一換
首頁 裝配圖網 > 資源分類 > DOC文檔下載  

Vi 文本編輯器

  • 資源ID:122774922       資源大?。?span id="24d9guoke414" class="font-tahoma">57KB        全文頁數:6頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

Vi 文本編輯器

Vi 文本編輯器1. 實驗目的1. 了解和掌握使用Vi編輯器編輯文件2. 了解和掌握使用gcc編譯器和gdb調試器3. 對程序編譯運行,分析運行結果。2. 實驗原理和實驗設備Linux 操作系統(tǒng)3. 實驗步驟1. 如何調用vi文本編輯器,使用gcc編譯器和gdb調試器,編譯運行文件,分析運行結 果。進入 VI 編輯器格式:vi文件名例 : vi sy.cVi 編輯器三種工作方式:1編輯方式:進入 VI 處于編輯方式2. 文本輸入方式:在編輯方式下輸入a ,進入追加方式,輸入i,進入插入方式3 命令方式:在輸入方式下,按 Esc 鍵,由文本輸入轉向編輯方式,輸入冒號:進入命 令方式4. 退出 vi: wq 寫文件退出: w wenjianming 寫文件: q! 不寫退出: wq! 寫退出編譯 c 文件Gcc -o wenjianming.out wenjianming.c運行文件:./wenjianming.out2. 程序示例(1) /* 父子進程之間的同步之例 */#include <stdio.h>main( )int pid1;if(pidl=fork() /*create childl */*進程創(chuàng)建:fork()格式:int fork()返回值:0創(chuàng)建成功,從子進程返回;>0創(chuàng)建成功,從父進程返回,其值為子進程的PID號;-1創(chuàng)建失敗。*/ if (fork() /*create the child2*/printf (“parent's context.n");/*輸出字符串"parent's context”.*/printf(“parent is waiting the child1 terminate.n);wait(O);/*在父進程中需要等待子進程結束處使用系統(tǒng)調用wait(O)。*/printf(“parent is waiting the child2 terminate.n”);wait(0);printf(“parent terminate.n”);exit(0);else/* child2*/printf(“child2's context.n");sleep(5);/*使用 sleep(5)延時 5 秒*/printf(“ child2 terminate.n”);exit(O);/*在子進程結束處使用系統(tǒng)調用exit(),使子進程自我終止,并向該父進程發(fā)終止 信號;*/else if(pid1=0)/* child1 */ printf(“child1's context.n”);sleep(10);printf(“child1 terminate.n”);exit(0);分析: 上述程序是父進程首先創(chuàng)建一個子進程,若成功,再創(chuàng)建另一個子進程,之后三個 進程并發(fā)執(zhí)行。究竟誰先執(zhí)行,是隨機的,可根據執(zhí)行結果判斷。試分析該程序的所有運行 結果。注釋: fork( ) 調用正確完成時,給父進程返回地是被創(chuàng)建子進程的標識,給子進程返回 的是 0;創(chuàng)建失敗時,返回給父進程的時1;exit(0) 進程終止自己wait(0) 父進程同步等待子進程結束,即無子進程結束,父進程等待。(2) 管道通信機制 通過使用管道實現兩個和多個進程之間的通信。所謂管道,就是將一個進程的標準輸 出與另一個進程的標準輸入聯系在一起,進行通信的一種方法。同組進程之間可用無名管道 進行通信,不同組進程可通過有名管道通信。使用無名管道進行父子進程之間的通信include <sys/types.h>#include<ctype.h>#include<unistd.h>int pipe( int filedes2);char parent=”a message to pipe' communication.n”;main() int pid,chan12;char buf100;pipe(chan1);pid=fork();if(pid<0) printf(“to create child errorn”); exit(1);if(pid>0) close(chan10); /*父進程關閉讀通道*/ printf(“parent process sends a message to child.n”); write(chan11,parent,sizeof(parent);close(chan11); printf(“parent process waits the child to terminate.n”); wait(0);printf(“parent process terminates.n”); elseclose(chanll);/*子進程關閉寫通道*/ read(chan10,buf,100);printf(“the message read by child process form parent is %s.n”,buf); close (chanl0);printf(“child process terminatesn”); 觀察運行結果。注釋:pipe( int filedes2):創(chuàng)建一個無名管道,filedes0為讀通道,filedes1為寫通道。 (3)Linux 中的多線程編程 threads.c#include <pthread.h>#include <stdio.h>#include <sys/time.h>#include <string.h>#define MAX 10/*本程序允許的最大臨界區(qū)數*/pt hread _t thread2;/* 定義兩線程 */ pthread_mutex_t mut;int number=0, i;void *thread1()printf ("thread1 : I'm thread 1n");for (i = 0; i < MAX; i+) printf("thread1 : number = %dn",number);pthread_mutex_lock(&mut);number+;pthread_mutex_unlock(&mut);sleep(2);printf("threadl :主函數在等我完成任務嗎? n"); pthread_exit(NULL);void *thread2()printf("thread2 : I'm thread 2n");for (i = 0; i < MAX; i+)printf("thread2 : number = %dn",number); pthread_mutex_lock(&mut);number+;pthread_mutex_unlock(&mut); sleep(3);printf("thread2 :主函數在等我完成任務嗎? n"); pthread_exit(NULL);void thread_create(void)int temp;memset(&thread, 0, sizeof(thread);/commentl/*創(chuàng)建線程*/if(temp = pthread_create(&thread0, NULL, threadl, NULL) != 0) /comment2prin tf("線程1創(chuàng)建失敗!n");elseprin tf("線程1被創(chuàng)建n");if(temp = pthread_create(&thread1, NULL, thread2, NULL) != 0) /comment3printf ("線程2創(chuàng)建失敗");elseprintf("線程2被創(chuàng)建n");void thread_wait(void)/*等待線程結束*/ if(thread0 !=0) /comment4 pthread_join(thread0,NULL);prin tf("線程1已經結束n"); if(thread1 !=0) /comment5pthread_join(thread1,NULL);printf ("線程2已經結束n"); int main() /*用默認屬性初始化互斥鎖*/pthread_mutex_init(&mut,NULL);prin tf("我是主函數哦,我正在創(chuàng)建線程,呵呵n"); thread_create();prin tf( 我是主函數哦,我正在等待線程完成任務阿,呵呵); thread_wait();return 0;3. 注意:Gcc - lpthread - o thread.out thread.c線程相關操作1) pthread_tpthread_t 在頭文件/usr/include/bits/pthreadtypes.h 中定義:typedef unsigned long int pthread_t;它是一個線程的標識符。2) pthread_create函數 pthread_create 用來創(chuàng)建一個線程,它的原型為:extern int pthread_create _P (pthread_t *_thread, _const pthread_attr_t *_attr, void *(*_start_routine) (void *), void *_arg);第一個參數為指向線程標識符的指針,第二個參數用來設置線程屬性,第三個參數是 線程運行函數的起始地址,最后一個參數是運行函數的參數。這里,我們的函數thread 不需要參數,所以最后一個參數設為空指針。第二個參數我們也設為空指針,這樣將生 成默認屬性的線程。對線程屬性的設定和修改我們將在下一節(jié)闡述。當創(chuàng)建線程成功時, 函數返回0若不為0則說明創(chuàng)建線程失敗,常見的錯誤返回代碼為EAGAIN和EINVAL。 前者表示系統(tǒng)限制創(chuàng)建新的線程,例如線程數目過多了;后者表示第二個參數代表的線 程屬性值非法。創(chuàng)建線程成功后,新創(chuàng)建的線程則運行參數三和參數四確定的函數,原 來的線程則繼續(xù)運行下一行代碼。3) pthread_join pthread_exit函數 pthread_join 用來等待一個線程的結束。函數原型為:extern int pthread_join _P (pthread_t _th, void *_thread_return);第一個參數為被等待的線程標識符,第二個參數為一個用戶定義的指針,它可以用來存 儲被等待線程的返回值。這個函數是一個線程阻塞的函數,調用它的函數將一直等待到 被等待的線程結束為止,當函數返回時,被等待線程的資源被收回。一個線程的結束有 兩種途徑,一種是象我們上面的例子一樣,函數結束了,調用它的線程也就結束了;另 一種方式是通過函數 pthread_exit 來實現。它的函數原型為: extern void pthread_exit _P (void *_retval) _attribute_ (_noreturn_); 唯一的參數是函數的返回代碼,只要 pthread_join 中的第二個參數 thread_return 不是 NULL,這個值將被傳遞給thread_return。最后要說明的是,一個線程不能被多個線程 等待,否則第一個接收到信號的線程成功返回,其余調用pthread_join的線程則返回錯 誤代碼 ESRCH。在這一節(jié)里,我們編寫了一個最簡單的線程,并掌握了最常用的三個函數pthread_create, pthread_join和pthread_exit。下面,我們來了解線程的一些常用屬性以及如何設置這些 屬性?;コ怄i相關 互斥鎖用來保證一段時間內只有一個線程在執(zhí)行一段代碼。1) pthread_mutex_init函數pthread_mutex_init用來生成一個互斥鎖。NULL參數表明使用默認屬性。如果 需要聲明特定屬性的互斥鎖, 須調用函數 pthread_mutexattr_init 。 函數 pthread_mutexattr_setpshared 和函數 pthread_mutexattr_settype 用來設置互斥鎖屬性。前 一個函數設置屬性 pshared,它有兩個取值, PTHREAD_PROCESS_PRIVATE和 PTHREAD_PROCESS_SHARED。前者用來不同進程中的線程同步,后者用于同步本進 程的不同線程。在上面的例子中,我們使用的是默認屬性 PTHREAD_PROCESS_ PRIVATE。后者用來設置互斥鎖類型,可選的類型有PTHREAD_MUTEX_NORMAL、 PTHREAD_MUTEX_ERRORCHECK、PTHREAD_MUTEX_RECURSIVE 和 PTHREAD _MUTEX_DEFAULT。它們分別定義了不同的上鎖、解鎖機制,一般情況下,選用最后 一個默認屬性。2) pthread_mutex_lock pthread_mutex_unlock pthread_delay_np pthread_mutexock聲明開始用互斥鎖上鎖,此后的代碼直至調用pthread_mutex_unlock為止, 均被上鎖, 即同一時間只能被一個線程調用執(zhí)行。 當一個線程執(zhí)行到 pthread_mutex_lock 處時,如果該鎖此時被另一個線程使用,那此線程被阻塞,即程序 將等待到另一個線程釋放此互斥鎖。注意:1) 需要說明的是,上面的兩處sleep不光是為了演示的需要,也是為了讓線程睡眠一段 時間,讓線程釋放互斥鎖,等待另一個線程使用此鎖。2) 請千萬要注意里頭的注釋comment1-5,如果沒有comment】和comment4,comment5, 將導致在pthread_join的時候出現段錯誤,另外,上面的comment2和comment3是根源 所在,所以千萬要記得寫全代碼。因為上面的線程可能沒有創(chuàng)建成功,導致下面不可能 等到那個線程結束,而在用 pthread_join 的時候出現段錯誤(訪問了未知的內存區(qū))。 另外,在使用memset的時候,需要包含string.h頭文件。實驗報告(1)實驗題目。(2) 說明對程序的理解,程序后加上注釋語句。(3) 分析程序的執(zhí)行結果并加以解釋。4. 實驗結果分析vi是“ Visual in terface ”的簡稱,它可以執(zhí)行輸出、刪除、查找、替換、塊操作等 眾多文本操作,而且用戶可以根據自己的需要對其進行定制,這是其他編輯程序所沒有的。vi不是一個排版程序,它不像Word或WPS那樣可以對字體、格式、段落等其他屬性進 行編排,它只是一個文本編輯程序。Vi 是全屏幕文本編輯器,它沒有菜單,只有命令。5. 實驗小結文本編輯器有很多,比如圖形模式的 gedit、 kwrite、 OpenOffice . . ,文本模 式下的編輯器有vi、vim (vi的增強版本)和nanovi和vim是我們在Linux中最常用的編輯器。掌握vi(vim)最簡單的用法,以讓我們作為Linux入門級用戶在最短的時 間內學會使用它。

注意事項

本文(Vi 文本編輯器)為本站會員(z****)主動上傳,裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(點擊聯系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!