system函数

system函数与exec函数 文章目录system函数与exec函数system函数exec系列函数 system函数与exec函数 启动另一个新的进程 system函数   >> system函数的原型: #include <stdlib.h> int system(const char *string);   >> system函数的作用:   运行一条命令并等待该命令的完成,该... 阅读详情
 

(1)system实现说明

system在其实现中调用了fork、exec和waitpid,因此有三种返回值:

如果fork失败或者waitpid返回除EINTR之外的出错,则system返回-1,而且errno中设置了错误类型。

如果exec失败,则其返回值如同Shell执行了exit(127)一样。

如果三个函数 (fork、exec和waitpid)都执行成功,system的返回值是执行Shell命令的终止状态,其状态值同waitpid中的说明。

使用system而不是直接使用fork和exec的优点是使用方便,而且system进行了所需的各种出错处理,以及各种信号处理。

 

(2)system函数原型

所需          头文件

#include <stdlib.h>

函数说明

system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略

函数原型

int system(const char * string)

函数返回值

如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值。如果system()调用成功则最后会返回执行Shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认是否执行成功

附加说明

在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题

 

(3)system函数使用实例

system.c源代码如下:

#include <stdio.h>

#include <stdlib.h>

int main()

{

    system("ls -al /etc/passwd /etc/shadow") ;

    return 0 ;

}

编译 gcc system.c –o system。

执行./system,执行结果如下:

-rw-r--r-- 1 root root   2676 2005-12-08 05:48 /etc/passwd

-rw-r----- 1 root shadow 2268 2005-12-08 05:48 /etc/shadow

 

摘录自《深入浅出Linux工具与编程》

Android 13.0 展讯平台关机充电动画横屏显示修改 在13.0的系统rom定制化开发中,在关于展讯平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范, 所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能 阅读详情

相关推荐

iOS Certificates, Identifiers & Profiles简介

1. Certificates Certificates是生成开发和生产所需的证书。 2.1 certSigningRequest文件 生成证书前,需要先生成certSigningRequest文件,certSigningRequest文件由【钥匙串访问】生成。 选择菜单【钥匙串访问】,【证书助理】下的【从证书颁发机构请求证书…】 填写【用户电子邮件地址: 】,将【请求是:】的选项改为【储存到磁盘】 输入certSigningRequest文件的文件名,并指定保存位置。 保存certSignin

假装你是大灰狼的专栏 7058

12.system函数

1.system函数 system函数原型: int system(const char *command); system函数相对exec族函数简单粗暴。并且system函数执行完毕后还会从函数调用点继续往下执行代码 返回值: system()在调用/bin/sh时成功则返回进程状态值 system()在调用/bin/sh时失败则返回-1 其他失败原因(如sh不能执行)返回127 2.使用system函数 示例代码一: #include<stdio.h&g...

m0_46889275的博客 631

告别爆显存!手把手教你为ComfyUI+华为Atlas 300I Duo配置wan2.1视频生成工作流(含CPU-VAE参数)

本文详细介绍了华为Atlas 300I Duo与ComfyUI的深度适配实战,重点优化wan2.1视频生成工作流。从硬件散热改造到软件栈配置,再到ComfyUI专项优化,提供完整的解决方案,显著提升视频生成效率与稳定性,特别适合需要高效文生视频的应用场景。

weixin_26812607的博客 461

Linux系统编程之进程(system函数、popen函数)

system() 函数是一个C标准库函数,用于执行系统命令或外部程序。它允许你从C程序中调用命令行命令。NAMEcommand 是一个以空终止的C字符串,包含要执行的命令。system() 函数的工作方式如下:它启动一个新的shell进程(通常是默认的命令行shell)。然后在新的shell中执行command字符串中指定的命令。当命令执行完毕后,system() 函数等待命令的返回状态(退出状态)。最后,它返回命令的返回状态。// 在Unix/Linux系统上列出当前目录的文件。

咖喱年糕的博客 4929

自动驾驶入门到进阶完整指南:感知、预测、规划、端到端、仿真测评与场景挖掘全解析

对小白来说,不建议一开始直接冲端到端大模型。先学数据和坐标系:否则所有结果都看不懂。再学 LiDAR 3D 检测:最容易建立空间感。再学 BEV/多相机感知:这是当前主流。再学轨迹预测:理解交互和多模态。再学规划控制:理解车为什么这样开。再学仿真和闭环评测:理解 open-loop 和 closed-loop 差异。最后学端到端/VLM/VLA:这时候你才知道它到底替代了哪些模块。贯穿始终学习场景挖掘和安全测评:这是工业界最核心的能力之一。

u013250861的博客 394

centos7搭建LNMP环境-编译安装&yum安装-超详细

文章目录1. 首先了解编译安装和yum安装的区别。2. yum安装准备工作---切换阿里云yum源3. 编译安装lnmp4.yum安装lnmp5. lnmp一键安装6. 一些报错7. 笔记8. 参考文章 1. 首先了解编译安装和yum安装的区别。 windows下安装centos虚拟机,之前写过。传送门~~ 编译安装: 可以按需安装,想安在哪个目录下就安在哪个目录下。 可以设定参数 可安装自己想要的版本 yum安装: 安装的方便快捷 不需要考虑包的依赖 可以直接使用service nginx st

最美不过下雨天 9349

inux 下system函数原型:http://blog.chinaunix.net/uid-29191363-id-4020441.html

inux 下system函数原型: #include  int system(const char *command); system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During

诺尔曼 825

Yolov5s/Yolov8s网络结构图

yolov8、yolov5网络结构图

Goodness2020的博客 9925

system函数的原理和调用方法

原文地址:http://blog.sina.com.cn/s/blog_7708265a01010luz.html

峰峰的专栏 7440

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 117

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助!

杨秀璋的专栏 4121

system函数遇到的问题

system函数遇到的问题 这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,就随手百了一下度,问题出现了,很多人都说system()函数要慎用要少用要能不用则不用,system()函数不稳定? 下面是system函数百度的介绍: 进程管理之system 详解 system定义

yuan 1820

PCB仿真软件:Altium Designer_(6).PCB布线设计:自动布线与手工布线

通过以上步骤,我们完成了一个简单的PCB设计案例。在这个过程中,我们使用了自动布线和手工布线的综合策略,确保布线质量符合设计要求。创建PCB项目:在Altium Designer中创建一个新的PCB项目。导入原理图:将原理图文件导入到PCB项目中。设置布线规则:通过设置必要的布线规则,如线宽、间距等。启动自动布线:使用自动布线器进行初步布线。手工优化布线:通过手工布线工具优化关键信号的布线路径。保存和导出PCB文件:保存PCB文件并导出Gerber文件,用于生产。

kkchenjj的博客 2522

php system函数用法,system函数如何使用?总结system函数实例用法

这篇文章主要简单分析了linux下system函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下简单分析了linux下system函数的相关内容,具体内容如下intlibc_system (const char *line){if (line == NULL)/* Check that we have a command processor available. It mightnot be ...

weixin_29982199的博客 4964

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Linux之system函数

转载自:https://my.oschina.net/renhc/blog/53580   曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,...

QtHalcon 835

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

system函数详解

基本概念: system函数在其实现中调用了fork、exec和waitpid,使用system函数而不是直接使用fork和exec的优点是:system进行了所需的各种出错处理以及信号处理。 注:对fork和exec不熟悉的先参考文章:fork编程之exec函数详解 SYSTEM(3) Linux Programmer's Manual

daiyudong2020的博客 2462

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

popen函数和system函数详解

1、popen函数 我们先用man指令查一下popen函数: 函数说明: (1)popen()会调用fork()产生子进程,然后从子进程中调用/bin/sh -c来执行参数command的指令。 (2)参数type可使用“r”代表读取,“w”代表写入。依照此type值,popen()会建立管道连到子进程的标准输出设备或标准输入设备,然后返回一个文件指针。随后进程便可利用此文件指针来读取...

everthing willl be ok 3万+

windows system函数

Windows函数 windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); system函数已经被收录在标准c库中,可以直接调用 程序例: #include stdlib.h> #include stdio.h> int main(void)

yochingbox的博客 621

system函数的详细使用

函数接口 _DCRTIMP int __cdecl system( _In_opt_z_ char const* _Command ); system函数已经被收录在标准c库中,头文件为<stdlib.h> 作用 执行系统命令调用命令处理器来执行命令。 如果命令是空指针,则该函数只检查是否有命令处理器可以被此函数使用。 命令非空则调用命令的效果取决于系统和库的实现,并可能导致程序以非标准的方式运行或终止。 补...

qq_42591783的博客 1万+

C语言system函数

我们今天来看看在windows操作系统下system () 函数详解(主要是在C语言中的应用) 注意:在windows下的system函数中命令可以不区别大小写! 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command);system函数已经被收录在标准c库中,可以直接调用。例如:#include<stdio.h> #include<

追梦的小蚂蚁 11万+

system函数返回值

  system(执行shell 命令)  相关函数  fork,execve,waitpid,popen  表头文件  #include  定义函数  int system(const char * string);  函数说明  system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随

7862

system函数的总结

最近在看APUE第10章中关于system函数的POSIX.1的实现。关于POSIX.1要求system函数忽略SIGINT和SIGQUIT,并且阻塞信号SIGCHLD的论述,理解得不是很透彻,本文就通过实际的实例来一探究竟吧。 一、为什么要阻塞SIGCHLD信号 #include <stdlib.h> int system(const char *command); 函数工作大致...

SurpassLi的专栏 150
上一篇: 进程中的三种用户ID
下一篇: 会话、进程组与僵死进程
guoping16
博客等级 码龄19年 283粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值