Linux前後臺程序的切換與控制

本文主要介紹在Linux下運行程序,及在前臺和後臺之間切換與控制的方法。

前臺運行程序


通常的運行方法是:./a.out,表示運行當前目錄下的可執行程序,並運行在前臺。

運行在前臺指的是當前終端窗口會暫停接受其他指令,而處於a.out的運行狀態。當關閉當前終端窗口時,程序也會被關閉。

注意,不管運行在前臺還是後臺的程序,如果有輸出到終端的程序指令,如cout, cerr等,都會在運行的終端上輸出。

後臺運行程序


程序運行在後臺時,當前終端可以接受其他指令。

運行後臺程序的方法有兩種:

  • 在運行程序指令的最後加上符號:&,如./a.out&。注意,此程序仍依賴於當前終端,如果終端關閉,程序也會退出。
  • 使用nohup命令:nohup ./a.out&。該指令不依賴於終端,即使終端關閉,程序仍在後臺運行。如果標準輸出是終端,會寫入nohup.out文件,如果標準錯誤是終端,會重定向到標準輸出。

查看後臺程序


兩種方式:

  • jobs -l-l參數顯示PID,前面的序號標識進程序號,+號表示當前任務,-號表示下一個任務。注意,該命令只能查看當前終端的後臺任務,在其他終端啓動的後臺任務不可見。
  • ps aux,查看所有運行的程序。

進程的前後臺切換


前臺到後臺運行

如果程序已經在前臺運行,不想關閉程序並重新啓動,可以執行以下步驟:

  1. ctrl + z
  2. bg %進程序號

第一步是將一個正在前臺執行的程序放到後臺,並處於暫停狀態。第二步是繼續運行一個後臺暫停的程序,如果只有一個程序,可省略參數。

後臺程序到前臺

查看到後臺程序的進程序號後,使用fg %進程序號即可。如果只有一個程序,可省略參數。

關閉正在運行的程序


對於前臺程序,可直接在終端上按下ctrl + c關閉當前程序。

對於後臺程序,有以下方法:

  • 先通過ps查看進程號,再kill -9 pid-9參數可省略,默認信號即可(前提是進程未捕獲該信號,下同)。
  • killall a.out
  • 先通過jobs查看進程序號,再kill %進程序號
  • 根據程序對信號的處理情況,發送相應信號。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章