Hello! 欢迎来到小浪云!


【C 语言】System 系统调用 ( Windows )


文章目录

一、System 系统调用简介

二、系统调用示例

三、调用其它程序

一、System 系统调用简介


System 系统调用的返回值在不同操作系统上有所不同,例如在 WindowsLinux 和 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 命令。

代码如下:

#include <stdlib.h> int main(){     system("notepad"); }

编译代码:

gcc main.c

运行代码:

.a.exe

运行效果:

【C 语言】System 系统调用 ( Windows ) 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");     } }

【C 语言】System 系统调用 ( Windows ) 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

执行效果:

【C 语言】System 系统调用 ( Windows ) alt=”【C 语言】System 系统调用 ( Windows )” />

关闭记事本窗口后,继续向下执行,打印返回值结果。

【C 语言】System 系统调用 ( Windows ) alt=”【C 语言】System 系统调用 ( Windows )” />

相关阅读