文章目錄
一、System 系統(tǒng)調(diào)用簡介
二、系統(tǒng)調(diào)用示例
三、調(diào)用其它程序
一、System 系統(tǒng)調(diào)用簡介
System 系統(tǒng)調(diào)用的返回值在不同操作系統(tǒng)上有所不同,例如在 Windows、Linux 和 Mac 系統(tǒng)中,返回值各有差異。
Windows 下的 CMD 命令提示符與 Linux 下的 Terminal 終端命令功能相似,其中提供的命令類型基本都有各自對應(yīng)的命令。
例如:
- 查看文件目錄:Windows 下的 dir 命令相當(dāng)于 Linux 中的 ls 命令;
- 查看文本:Windows 下的 type 命令相當(dāng)于 Linux 中的 cat 命令;
- 查看進程:Windows 下的 tasklist 命令相當(dāng)于 Linux 中的 ps 命令;
(博客資源中附帶一份 Windows 常用命令)
System 函數(shù)的作用是用于執(zhí)行操作系統(tǒng)的終端指令。(在本程序中用于執(zhí)行其他程序)
二、系統(tǒng)調(diào)用示例
涉及到在 Windows 下使用 gcc,參考【C 語言】Windows 下使用 gcc 編譯器(常用的編譯器 | qt 中的 gcc 編譯器 | 獨立安裝 MinGW)
在使用系統(tǒng)調(diào)用之前,首先需要導(dǎo)入 stdlib.h 頭文件。在代碼中調(diào)用 system(“notepad“); 相當(dāng)于在命令行執(zhí)行 notepad 命令。
代碼如下:
編譯代碼:
gcc main.c
運行代碼:
.a.exe
運行效果:
alt=”【C 語言】System 系統(tǒng)調(diào)用 ( Windows )” />
上述程序在 Windows 下執(zhí)行,如果在 Mac 或 Linux 也可以使用系統(tǒng)調(diào)用,只是使用的命令不同。
反復(fù)彈出計算器:
// 系統(tǒng)調(diào)用頭文件 #include <stdlib.h> int main(){ // 循環(huán)打開計算器, 用戶關(guān)閉后, // 立刻彈出一個新的計算器 // 流氓軟件 while(1){ // 打開計算器 system("calc"); } }
彈出多個計算器:可以嘗試彈出一萬個:
// 系統(tǒng)調(diào)用頭文件 #include <stdlib.h> int main(){ int i = 0; for(i = 0; i < 10000; i++){ // 打開計算器 system("calc"); } }
alt=”【C 語言】System 系統(tǒng)調(diào)用 ( Windows )” />
三、調(diào)用其它程序
被調(diào)用程序源碼:在該代碼中打開記事本,并返回返回值 666;一般情況下返回值 0 代表成功,返回 -1 代表失敗。
#include <stdlib.h> int main(){ // 打開記事本 system("notepad"); // 返回返回值 return 666; }
編譯上述程序:使用 -o 指定編譯生成的程序名為 open_notepad.exe,編譯后在同級目錄中生成 open_notepad.exe 可執(zhí)行程序。
gcc open_notepad.c -o open_notepad
主程序源碼:調(diào)用上面的程序,并返回返回值。
// 系統(tǒng)調(diào)用頭文件 #include <stdlib.h> // 標(biāo)準(zhǔn) io 流頭文件 #include <stdio.h> int main(){ // 打開 open_notepad.exe 程序 int result = system("open_notepad"); // 打印返回結(jié)果 printf("open_notepad , result = %d", result); return 0; }
編譯運行:
gcc open_notepad.c -o open_notepad gcc main.c .a.exe
執(zhí)行效果:
alt=”【C 語言】System 系統(tǒng)調(diào)用 ( Windows )” />
關(guān)閉記事本窗口后,繼續(xù)向下執(zhí)行,打印返回值結(jié)果。
alt=”【C 語言】System 系統(tǒng)調(diào)用 ( Windows )” />