【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

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

目录
相关文章
|
3月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
Windows
修改Windows语言出现“我们无法获取此Windows显示语言”问题怎么办?
本文介绍在Windows 10操作系统中,修改系统的显示语言的方法;并解决在这一过程中,出现的“很抱歉,我们无法获取此Windows显示语言”报错问题~
286 2
修改Windows语言出现“我们无法获取此Windows显示语言”问题怎么办?
|
5月前
|
自然语言处理 Android开发 Windows
文本----搜狗如何使用日语输入法,日本本土使用人数最多输入法Simeji Japanese Input + Emoji,Windows10如何添加日语输入法,Windows + 空格选择语言,谷歌公
文本----搜狗如何使用日语输入法,日本本土使用人数最多输入法Simeji Japanese Input + Emoji,Windows10如何添加日语输入法,Windows + 空格选择语言,谷歌公
|
6月前
|
算法 C语言 Windows
C语言实现2048游戏(Windows版)
C语言实现2048游戏(Windows版)
|
网络协议 Windows
windows 80端口占用 system pid=4
windows 80端口占用 system pid=4
95 0
|
7月前
|
Windows
不让Windows显示语言栏“中”“英”字符的一种方法
【2月更文挑战第6天】本文介绍在Windows 11操作系统中,将任务栏右下角的语言栏的“中”、“英”标识加以隐藏、消除的一种或许可行的方法~
不让Windows显示语言栏“中”“英”字符的一种方法
|
7月前
|
编译器 C语言 流计算
在Windows系统中创建C语言开发环境
【2月更文挑战第22天】在Windows系统中创建C语言开发环境
63 6
|
7月前
|
Go 开发工具 Windows
【GO语言】windows下GO语言环境搭建
【2月更文挑战第1天】windows下GO语言环境搭建
205 0
|
7月前
|
定位技术 Windows
Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理
Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理
148 1