c/c++程式內部呼叫shell指令碼
阿新 • • 發佈:2019-01-11
system()
函式原型:
#include <stdlib.h>
int system(const char *str)
#!/bin/sh
echo $HOME
#include <stdlib.h> #include <iostream> #include <string> int main() { std::string res; res = system("./test.sh"); std::cout << res << '\n'; return 0; }
特點:
1.兩種錯誤返回值:
-1 system()進行fork子程序失敗;
127 執行指令碼或shell命令失敗
2.無法在程式中直接獲取到shell命令的返回內容
popen()
函式原型:
#include <stdio.h>
FILE* popen(char *command,char *type)
指令碼示例:
同上
#include <stdio.h> //popen() #include <string.h> //memset() int main() { FILE *fp; char buffer[80]; memset(buffer, 0x00, sizeof(buffer)); fp = popen("./test.sh", "r"); fgets(buffer, sizeof(buffer), fp); printf("[%s]\n", buffer); pclose(fp); return 0; }
特點:
1. 用 建立管道 的 方式 啟動 一個 程序, 並呼叫 shell
2. 可在程式內部獲取shell執行後的返回內容
參考部落格 :https://blog.csdn.net/luokehua789789/article/details/53117904