Linux下system()與execl()的區別,popen()

System與exec的區別

1、system()和exec()都可以執行進程外的命令,system是在原進程上開闢了一個新的進程,但是exec是用新進程(命令)覆蓋了原有的進程

2、system()和exec()都有能產生返回值,system的返回值並不影響原有進程,但是exec的返回值影響了原進程

 

popen()

system()函數用起來很容易出錯,返回值太多,而且返回值很容易跟command的返回值混淆。這裏推薦使用popen()函數替代,關於popen()函數的簡單使用也可以通過上面的鏈接查看。

popen()函數較於system()函數的優勢在於使用簡單,popen()函數只返回兩個值:
成功返回子進程的status,使用WIFEXITED相關宏就可以取得command的返回結果;
失敗返回-1,我們可以使用perro()函數或strerror()函數得到有用的錯誤信息。

int res = system("pwd");
 
或
 
if(-1 == system("pwd"))
{
    std::cout<<"error"<<std::endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章