生活随笔
收集整理的這篇文章主要介紹了
C 语言中可以调用命令行指令的 system()函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C語言有一個system函數(在<stdlib.h>頭中,C++則為<cstdlib>頭),可以用來調用終端命令。原型如下:
int system(const char *cmdline /* 命令字符串 */); system函數調用/bin/sh ?執行特定的shell命令,阻塞當前的進程知道shell命令執行完畢。執行system實際上是調用了fork函數(產生新進程)、exec函數(在新進程中執行新任務)、waitpid函數(等待新進程結束)。
函數詳解 在 Linux 系統中(執行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函數(當system函數返回值為0時,表明system函數無效,在UNIX系統中,system函數總是可用的);。如果system()調用成功則最后會返回執行shell命令后的返回值,但是此返回值也有可能為 system()調用/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。
附加說明 在編寫具有SUID/SGID權限的程序時請勿使用system(),system()會繼承環境變量,通過環境變量可能會造成系統安全的問題。 參考鏈接:http://blog.csdn.net/augusdi/article/details/20002519
轉載于:https://www.cnblogs.com/sylar5/p/6640078.html
總結
以上是生活随笔為你收集整理的C 语言中可以调用命令行指令的 system()函数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。