开发者社区> 韩曙亮> 正文

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

简介: 【C 语言】System 系统调用 ( Windows )
+关注继续查看

文章目录

一、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



运行效果 :

image.png



上述程序在 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");
    }
}


image.png






三、调用其它程序


被调用程序源码 : 在该代码中打开记事本 , 并返回返回值 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


执行效果 :

image.png



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


image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【C语言】使用回调函数通过冒泡排序模拟实现qsort函数
【C语言】使用回调函数通过冒泡排序模拟实现qsort函数
6 0
VBS 脚本语言-利用vbs调用ie浏览器访问百度查天气实例演示
VBS 也挺强大的呢,这篇给大家演示的是调用 ie 浏览器,并用百度查出天气
23 0
C语言与C++语言相互调用
C语言与C++语言相互调用 1 C++调用C中的函数   1.1 C++调用C中的函数(正确使用)   1、案例源文件组成                                               图1   2、math模块包含文件   1)源文件math.
1056 0
在 Linux 系统中安装Load Generator ,并在windows 调用方法
在 Linux 系统中安装Load Generator ,并在windows 调用 由于公司需要测试系统的最大用户承受能力,所以需要学习使用loadrunner。在安装的时候碰到了不少问题,所以写下此文章总结遇到的问题以及解决方案,希望能帮到大家。
1377 0
c++ 使用vs2010调用 win32api
以前读书时都是用vc6.0.后来学c#用vs。装系统只装了vs2010.今天用vs2010写c++程序。发现有点陌生。就总结下,免得以后忘记。   首先用vs2010选择c++语言。新建一个win32控制台程序。
888 0
+关注
韩曙亮
专注 Android 领域
2605
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载