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

举报
韩曙亮 发表于 2022/01/10 23:07:21 2022/01/10
【摘要】 文章目录 一、System 系统调用简介二、系统调用示例三、调用其它程序 一、System 系统调用简介 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");
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

编译代码 :

gcc main.c

  
 
  • 1

运行代码 :

.\a.exe

  
 
  • 1

运行效果 :

在这里插入图片描述

上述程序在 Windows 下执行 , 如果在 MAC 或 Linux 也可以使用系统调用 , 只是使用的命令不同 ;


反复弹出计算器 :

// 系统调用头文件
#include <stdlib.h>

int main()
{
	// 循环打开计算器, 用户关闭后, 
	// 立刻弹出一个新的计算器
	// 流氓软件
	while(1){
		// 打开计算器
		system("calc");
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

弹出多个计算器 : 可以尝试弹出一万个 ;

// 系统调用头文件
#include <stdlib.h>

int main()
{
	int i = 0;
	for(i = 0; i < 5; i++){
		// 打开计算器
		system("calc");
	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述





三、调用其它程序



被调用程序源码 : 在该代码中打开记事本 , 并返回返回值 666 ; 一般情况下返回值 0 代表成功 , 返回 -1 代表失败 ;

#include <stdlib.h>

int main()
{
	// 打开记事本
	system("notepad");
	
	// 返回返回值
	return 666;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

编译上述程序 : 使用 -o 指定编译生成的程序名为 open_notepad.exe , 编译后再同级目录中生成 open_notepad.exe 可执行程序 ;

gcc open_notepad.c -o open_notepad

  
 
  • 1

主程序源码 : 调用上面的程序 , 并返回返回值 ;

// 系统调用头文件
#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;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

编译运行 :

gcc open_notepad.c -o open_notepad
gcc main.c
.\a.exe

  
 
  • 1
  • 2
  • 3

执行效果 :

在这里插入图片描述

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

在这里插入图片描述

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/114963781

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。