ios 執行shell指令碼

2021-06-26 05:39:57 字數 1641 閱讀 8219

一、由於ios中沒有 cocoa的nstask 所以要在cocoa touch sdk中執行shell 只能用系統呼叫

int system(const char * string);

例如:system("ls");

注意system是系統c函式 所以引數不要使用nsstring;

函式庫:include

system(執行shell 命令)

相關函式

fork,execve,waitpid,popen

表頭檔案

#i nclude

定義函式

int system(const char * string);

函式說明

system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c string來執行引數string字串所代表的命令,此命》令執行完後隨即返回原呼叫的程序。在呼叫system()期間sigchld 訊號會被暫時擱置,sigint和sigquit 訊號則會被忽略。

返回值 =-1:出現錯誤 

=0:呼叫成功但是沒有出現子程序 

>0:成功退出的子程序的id

如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(null),則返回非零值》。如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。

如果fork()失敗 返回-1:出現錯誤如果exec()失敗,表示不能執行shell,返回值相當於shell執行了exit(127)

如果執行成功則返回子shell的終止狀態

如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(null),則返回非零值》。如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。

附加說明

在編寫具有suid/sgid許可權的程式時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。

範例 #i nclude

main()

執行結果:

-rw-r--r-- 1 root root 705 sep 3 13 :52 /etc/passwd

-r--------- 1 root root 572 sep 2 15 :34 /etc/shado

例2:char tmp;

sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);

system(tmp);

其中dev是/dev/sda1。 二、

支援版本:蘋果公司的

gcc version 4.0.1

voidrunls()

如果你希望呼叫系統命令,先執行

shell:

voidrunsystemcommand(nsstring *cmd)

shell 執行shell指令碼

bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...

Shell指令碼執行

shell是乙個命令列直譯器,它為使用者提供了乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動 掛起 停止甚至是編寫一些程式。shell指令碼 shell script 是一種shell編寫的指令碼程式。linux的shell種類很多,常見的有 bourne a...

shell指令碼執行

最近工作特別忙,感覺好長時間沒有寫日誌了,今天就來簡單的聊一下linux系統中的shell指令碼。其實簡單來說就是shell程式設計就是對一堆linux命令的邏輯化處理,在指令碼裡編輯所要執行的業務邏輯。bin bash modify below variables if you need.user...