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