簡單來說就是暫停的意思,一般在LINUX編程時會用到,等待接收信號,才會重新運行 。 在進行C/C++編程的時候,在運行程式查看輸出效果時,會出現視窗閃一下就關閉的情況。 在C語言中一般通過添加getchar(); 在C++中一般在main函數中的return之前添加system("pause"); ...
簡單來說就是暫停的意思,一般在LINUX編程時會用到,等待接收信號,才會重新運行 。
在進行C/C++編程的時候,在運行程式查看輸出效果時,會出現視窗閃一下就關閉的情況。
在C語言中一般通過添加getchar();
在C++中一般在main函數中的return之前添加system("pause");這樣就可以看清楚輸出的結果,pause會輸出"press any key to continue. . ."。
system函數原型為 int system(char *command),在windows平臺就是執行DOS命令,在linux平臺就是執行shell命令
Linux下system () 函數詳解簡介 (執行shell 命令) 相關函數 fork,execve,waitpid,popen 表頭文件 #include<stdlib.h> 定義函數 int system(const char * string); 函數說明 system()會調用fork()產生子進程,由子進程來調用/bin/sh-c string來執行參數string字元串所代表的命令,此命令執行完後隨即返回原調用的進程。在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被忽略。 返回值 如果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<stdlib.h> main() { system(“ls -al /etc/passwd /etc/shadow”); } 執行結果: -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.System與exec的區別 1、system()和exec()都可以執行進程外的命令,system是在原進程上開闢了一個新的進程,但是exec是用新進程(命令)覆蓋了原有的進程 2、system()和exec()都有能產生返回值,system的返回值並不影響原有進程,但是exec的返回值影響了原進程 參考博文:https://blog.csdn.net/u010551600/article/details/23383411 https://my.oschina.net/renhc/blog/53580 https://blog.csdn.net/avrmcu1/article/details/38943055