文章目录
一、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 命令 ;
代码如下 :
#include <stdlib.h> int main() { system("notepad"); }
编译代码 :
gcc main.c
运行代码 :
.\a.exe
运行效果 :
上述程序在 Windows 下执行 , 如果在 MAC 或 Linux 也可以使用系统调用 , 只是使用的命令不同 ;
反复弹出计算器 :
// 系统调用头文件 #include <stdlib.h> int main() { // 循环打开计算器, 用户关闭后, // 立刻弹出一个新的计算器 // 流氓软件 while(1){ // 打开计算器 system("calc"); } }
弹出多个计算器 : 可以尝试弹出一万个 ;
// 系统调用头文件 #include <stdlib.h> int main() { int i = 0; for(i = 0; i < 5; i++){ // 打开计算器 system("calc"); } }
三、调用其它程序
被调用程序源码 : 在该代码中打开记事本 , 并返回返回值 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
执行效果 :
关闭记事本窗口后 , 继续向下执行 , 打印返回值结果 ;