popen 使用方法和kill功能描述

2021-08-15 19:40:04 字數 2077 閱讀 6175

[ kill ]功能描述: 轉

用於向任何程序組或程序傳送訊號。

標頭檔案用法:

#include

#include

int kill(pid_t pid, int sig);

引數: 

pid:可能選擇有以下四種

1. pid大於零時,pid是訊號欲送往的程序的標識。

2. pid等於零時,訊號將送往所有與呼叫kill()的那個程序屬同乙個使用組的程序。

3. pid等於-1時,訊號將送往所有呼叫程序有權給其傳送訊號的程序,除了程序1(init)。

4. pid小於-1時,訊號將送往以-pid為組標識的程序。

sig:準備傳送的訊號**,假如其值為零則沒有任何訊號送出,但是系統會執行錯誤檢查,通常會利用sig值為零來檢驗某個程序是否仍在執行。

返回值說明: 成功執行時,返回0。失敗返回-1,errno被設為以下的某個值 einval:指定的信號碼無效(引數 sig 不合法) eperm;許可權不夠無法傳送訊號給指定程序 esrch:引數 pid 所指定的程序或程序組不存在

popen()可以執行shell命令,並讀取此命令的返回值;  

popen()函式通過建立乙個管道,呼叫fork()產生乙個子程序,執行乙個shell以執行命令來開啟乙個程序。可以通過這個管道執行標準輸入輸出操作。這個管道必須由pclose()函式關閉,必須由pclose()函式關閉,

必須由pclose()函式關閉,

而不是fclose()函式(若使用fclose則會產生殭屍程序)。pclose()函式關閉標準i/o流,等待命令執行結束,然後返回shell的終止狀態。如果shell不能被執行,則pclose()返回的終止狀態與shell已執行exit一樣。

type引數只能是讀或者寫中的一種,得到的返回值(標準i/o流)也具有和type相應的唯讀或只寫型別。如果type是"r"則檔案指標連線到command的標準輸出;如果type是"w"則檔案指標連線到command的標準輸入。

command引數是乙個指向以null結束的shell命令字串的指標。這行命令將被傳到bin/sh並使用-c標誌,shell將執行這個命令。

popen()的返回值是個標準i/o流,必須由pclose來終止。前面提到這個流是單向的(只能用於讀或寫)。向這個流寫內容相當於寫入該命令的標準輸入,命令的標準輸出和呼叫popen()的程序相同;與之相反的,從流中讀資料相當於讀取命令的標準輸出,命令的標準輸入和呼叫popen()的程序相同。

如果呼叫fork()或pipe()失敗,或者不能分配記憶體將返回null,否則返回標準i/o流。popen()沒有為記憶體分配失敗設定errno值。如果呼叫fork()或pipe()時出現錯誤,errno被設為相應的錯誤型別。如果type引數不合法,errno將返回einval。

函式原型

file *popen(const char *command, const char *type);

int pclose(file *stream);

例:#include 

#include 

#include 

#include 

void

print_result(file

*fp)  

printf("\n>>>\n"

);  

while

(memset(buf, 0, 

sizeof

(buf)), fgets(buf, 

sizeof

(buf) - 1, fp) != 0 )   

printf("\n<<<\n"

);  

}  int

main(void

)    

print_result(fp);  

pclose(fp);  

sleep(1);  

}  }  

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...

PHP header 使用方法和介紹

header 函式向客戶端傳送原始的 http 報頭。認識到一點很重要,即必須在任何實際的輸出被傳送之前呼叫 header 函式 在 php 4 以及更高的版本中,您可以使用輸出快取來解決此問題 結果出錯 在呼叫 header 之前已存在輸出 header location header strin...

gitignore使用方法和規範

在實際的協作開發中,git是很常用的版本控制工具。但是git是如此的強大,我們應該怎麼學呢?git學習札記 是我剛寫的一篇學習git的文章,是參考了廖雪峰老師的git教程 學習的。但是實際使用中並沒有那麼簡單,首當其衝的問題是.gitignore檔案。在進行版本控制過程中,有些檔案是不需要管理的。比...