linux環境 c 中如何執行shell命令

2021-09-06 14:35:59 字數 1159 閱讀 5284

system 相當簡單:

int system(const char *command);
system("ps -aux");

2 popen

popen有兩個引數,第乙個是命令,2是開啟流的方式; 返回乙個檔案流——popen:讓程序看起來像檔案  

區別:linux下通過c執行命令的時候一半都是使用system()方法,但是該方法執行命令返回的值是-1或0,而有時候我們需要得到執行命令後的結果。可以使用管道實現

輸出到檔案流的函式是popen()

3 exerse  可以在乙個程序插入另外乙個程序執行,但是又不像fork()一樣產生乙個子程序,execve()插入的程序和原程序共享程序號,就好像執行這程序就像執行過程呼叫一般隨意

int execve(const char *filename, char *const argv, char *const envp);    1 要執行的檔名   2 引數    3 環境變數

execve 這種方式有些特別,必須傳人乙個shell指令碼檔案(這個檔案第一行必須是#!/bin/bash)。。

char *newargv = ;

char *newenviron = ;

execve("/bin/ls" , newargv, newenviron);      --- 如果是系統命令,需要其完整路徑、不然沒有輸出———— 也不報錯!

./execve.o ./execve_sscrs.sh

./execve.o execve_sscrs.sh

兩種方式都是可行的。

4

execl  跟exerse類似

extern int execl(_const char *_path,const char *_argv,...,null)

簡單解釋:函式execl()返回值定義為整形,如果執行成功將不返回!執行失敗返回-1。

引數列表中char *_path為所要執行的檔案的絕對路徑,從第二個引數argv開始為執行新的檔案所需的引數,最後乙個引數必須是控指標(我為了簡便用null代替)。

此時最好引入#include , 否則有警告。

execl("/usr/bin/sh", "sh", "-c","ls ~", 0);

linux下如何執行 sh檔案

乙個中等水平的linux使用者一定少不了經常執行.sh檔案,當然了,你可以在圖形介面下面直接雙擊該檔案,但無疑比較浪費時間。現在介紹第一種方法 在ubuntu下的 首先你要開啟乙個終端。然後輸入sudo su 隨後輸入密碼。這樣就取得了root使用者許可權。然後找到那個檔案 當然是在終端裡面用命令找...

Linux下面如何執行 SH檔案

乙個中等水平的linux使用者一定少不了經常執行.sh檔案,當然了,你可以在圖形介面下面直接雙擊該檔案,但無疑比較浪費時間。現在介紹第一種方法 在ubuntu下的 首先你要開啟乙個終端。然後輸入sudo su 隨後輸入密碼。這樣就取得了root使用者許可權。然後找到那個檔案 當然是在終端裡面用命令找...

Linux下面執行 sh檔案

今天公司有用到.sh檔案來自動化更新啟動war包,所以就來記錄一下遇到的乙個小問題,嘿嘿 windows linux xshell 1.以startup.sh為例子,cd到startup.sh檔案所在的目錄,ll檢視目錄下的檔案 2.chmod u x startup.sh 給檔案新增x許可權 許可...