Linux里的fork,popen,system函数

2.3函数fork的两种用法 +函数system的使用+函数popen 函数fork的两种用法fork以下的两种用法代码演示:假设客户端请求服务器 fork以下的两种用法 代码演示:假设客户端请求服务器 #include <stdio.h> #include <unistd.h> int main() { pid_t pid; int data; while(1) //while的作用:不断的获取客户端的请求 { printf1("ple 阅读详情

今天介绍一下Linux里fork,popen,system三个函数:

1.fork函数

fork函数是通过复制父进程来创建子进程,父子进程代码共享数据独有,这是一种分时拷贝技术,相对于vfork函数来说有较大的改进之处,返回值是来分流父子进程,对于父进程返回的是子进程的pid>0,对于子进程,返回的是0。
在这里插入图片描述
从图中可以看到它是一个系统调用函数

2.system函数

system函数可以看作是fork+execl+waitpid。当system接收的命令为NULL时返回值只有0和1两种,返回1表明系统的命令处理程序即/bin/sh是可用的,相反则返回0;否则fork出一个子进程,父进程则会使用waitpid一直等待子进程退出,子进程则会调用execl来启动一个程序代替自己,execl("/bin/sh",“sh”,"-c",cmdstring,(char*)0)是调用shell,这个shell路径是/bin/sh,后面的字符串都是参数,然后子进程就变成一个shell进程,这个shell的参数是cmdstring,就是system接受的参数。
在这里插入图片描述
从图中可以看到这是一个库函数

3.popen函数

popen函数用创建管道的方式启动一个进程,并调用shell,因为管道被定义成单向的,所以type参数只能定义成只读或只写,不能两者同时进行,结果流也相应的是只读或只写,command参数是一个字符串指针,指向一个以null结束符结尾的字符串,这个字符串也包含一个shell命令,这个命令被送到/bin/sh以-c参数执行,即由shell来执行,type参数也是一个指向以null结束符结尾的字符串的指针,这个字符串必须是’r’或者’w’来指明是读还是写。
popen函数的返回值是一个普通的标准I/O流,它只能用pclose函数来关闭。
**返回值:**若成功则返回文件指针,否则返回NULL,错误原因存于errno中。
在这里插入图片描述
从图中可以看到它也是一个库函数

基于强化学习框架的交易策略学习过程 每个状态s∈S 是一个由六个微观结构特征构成的向量,这些特征反映了当前市场的订单簿状态和近期交易行为。 阅读详情

相关推荐

基于STM32与MPU6050的实时姿态检测系统设计与实现(源码+硬件解析)

本文详细介绍了基于STM32单片机与MPU6050传感器的实时姿态检测系统设计与实现。通过硬件解析、传感器校准、卡尔曼滤波算法和欧拉角计算,实现高精度姿态检测。提供完整源码和调试技巧,适用于无人机、平衡车等嵌入式开发项目,解决噪声干扰和数据漂移等常见问题。

jupi8的博客 494

Linux 2.进程(exec族函数 和 fork、system、popen函数)

Linux 2.进程(exec族函数和fork、system、popen函数)exec 族函数和 fork 函数的结合 exec 族函数和 fork 函数的结合 做一个类似有客户端连接了服务器,服务端创建一个子进程,然后去修改 test.config 文件中的 LENGTH 的值把它改成 8 。 ...

黄色的拉拉的博客 559

Dify社区版多工作空间功能解锁:源码修改与多租户架构解析

多租户架构是现代SaaS平台实现数据隔离与资源管理的核心技术,其核心原理是通过租户模型将用户、应用和数据在逻辑上隔离。在AI应用开发平台中,这种架构能有效支持多团队、多项目并行开发,确保不同业务线的数据安全与独立迭代。Dify作为开源AI应用构建平台,其底层已设计完善的多租户模型,但社区版默认限制了单用户单工作空间。本文通过精准修改两处关键代码——账户初始化逻辑与系统功能开关,释放了平台固有的多工作空间管理能力。该方案无需改动数据库结构,直接利用现有RBAC权限体系,实现了类似企业版的**多租户隔离**体验

weixin_27059669的博客 1061

fork、vfork、system和exit

多任务 VS 单任务 进程的特点:每个进程拥有独立的虚拟地址空间 进程的pid:每个进程创建都有自己的id号 进程控制块(PCB):每个进程都有自己的控制块(struct task_,struct)(pid/ppid/fd/parent/child/mem) 如何创建进程? 对于开发人员,只需要知道如何创建进程,至于进程的调度由OS决定 fork创建进程: (1)给子进程分...

weixin_45595778的博客 237

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 551

SOEM主站开发篇(1):移植SOEM主站到Linux开发板

详细介绍了SOEM主站源码移植到Linux开发板上的步骤,同时演示了如何使用Linux开发板获取EtherCAT从站的PDO映射信息。

kevin1499的博客 2398

system函数 fork函数

system()函数功能强大,我对linux中的实现比较了解,具体分析这个,windows中的类似就不详解了。 好了,先看linux版system函数的源码: 代码: #include #include #include #include int system(const char * cmdstring) {   pid_t pid;   int status;   if(cmdstri...

u014426028的博客 1189

手把手教你如何在应用宝的Android模拟器安装第三方应用方法

通过上述步骤,你就能在腾讯应用宝模拟器中安装并运行本地的第三方APK应用了。虽然稍显繁琐,但操作起来并不复杂,只要按照步骤一步步做,就能顺利完成。希望这篇文章能帮助到遇到类似问题的你!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7213

fork ,system,popen

popen函数定义:FILE* popen(const char* command,const char* type); int pclose(FILE* stream);函数说明:popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关...

mt_09的博客 253

【量化入门】Tushare库获取公募基金的历史净值

在本文中,我们将介绍如何使用Python的Tushare库获取公募基金的历史净值。

木头大左的博客 1143

信号处理仿真:自适应信号处理_(8).自适应信道均衡

在无线通信系统中,信道的多径效应和时变特性会导致信号的失真,从而影响通信质量。自适应信道均衡技术通过实时调整均衡器的参数,以补偿信道失真,提高信号的质量和可靠性。本节将详细介绍自适应信道均衡的原理、算法和实现方法,并通过具体的仿真例子来说明其应用。

2401_87715305的博客 1039

Linux系统调用函数fork()、exec*、wait、system、popen

Linux-系统调用函数fork()、exec*、wait、system、popen等

lzz214的博客 1675

TSP:车为什么能和云端交互?

TSP:车为什么能和云端交互?

天赐好车的博客 410

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

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

咖喱年糕的博客 4929

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

popen/system与fork函数

首先来介绍一下fork函数 fork用来创建一个子进程。一个程序一调用fork函数,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。而如果两...

Cyrus_wen的博客 936

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Linux下system () 函数详解简介,system()与execl()的区别,popen()

Linux下system () 函数详解简介,system()与exec()的区别

ken2232的博客 8495

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[Linux]理清fork、vfork、clone、system、popen

目录 pid_t fork(void); 子进程返回0,父进程返回子进程pid,出错返回-1

~Ran~ 945

Linux进程fork()、exit()、wait()、exec族、system函数、popen函数

Linux进程进程相关概念、创建进程fork()、等待函数wait()、exec族、system函数、popen函数进程相关概念 进程相关概念、创建进程fork()、等待函数wait()、exec族、system函数、popen函数 进程相关概念

Jackice_Lee的博客 1233

Linux中fork+exec、system和popen的区别

fork+exec、system和popenfork+execsystempopen fork+exec   我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序(比如在我们写程序时需要使用我们之前的写过的某个程序的功能,通过该方式直接去调用一个可执行程序可以大大的简化我们的程序)。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。   父进程通过fork()的方式产生一个一模一样的子进程,创建出来的子进程再以

weixin_53811793的博客 1066

Linux进程基础知识(fork、vfork、exec族函数、system、popen

进程基础知识及Linux进程间通信前言一、进程的创建1、fork()2、vfork()3、模拟服务器---客户端二、使用步骤1.引入库2.读入数据总结 前言 1、进程拿来干嘛?      创建多个进程是任务分解时行之有效的方法。如,网络服务器进程可在监听客户端请求的同时,为处理每个请求而创立一个新的进程,同时,服务器进程会继续监听更多的客户端连接请求。 2、进程与程序的区别?      进程是一个可执行

weixin_42934918的博客 1103

Linux-popen,system函数差异

popen在linux下,不懂得可以查看帮助手册,我们先看看man手册怎么说。 可以看到,手册给出了两个函数原型,popen与pclose,其实我们很容易就能联想到另外一组函数,fopen,fclose。这两个函数是用来打开关闭文件的。所以其实我们已经可以猜到popen,pclose这两个函数的作用是什么了,p在linux下我们见到的地方大多数都与“管道”与关,所以可想而知,这两个函数实现的功

mxrrr_sunshine的博客 767

Linux进程——system函数、popen函数

函数定义 函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。 如果system()调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值。如果 system()调用成功则最后会返

2301_78772787的博客 1274

【Linux系统编程(进程编程)】exec族函数、system、popen

如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。如果 system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。execl函数就是,第一个参数是程序的path,最后一个参数是NULL。调用失败时,会设置errno并返回-1,然后从源程序的调用点接着往下执行。需求:实现功能,当父进程检测到输入为1时,创建子进程把配置文件的字段值修改掉。

路人的博客 1404

Linux进程 exec族函数和fork、system、popen.

今天又学习了Linux进程中 exec配合fork使用 和 system 以及 popen的使用。 比如我想做一个类似有客户端接入 我们来修改 某个文件的值。 一、exec和fork的结合: 这里有一个文件 叫file。 内容: 我想做一个类似有人连接了服务器,我创建一个子进程,然后去修改file文件中的BB的值 把它改成 5; 修改文件值代码: 这个运行则可以修改file文件中的值。 利用exec 和 fork 组合: 这样就可以运行可以让子进程去修改文件配置了 运行结果: 文件内容: 加粗样式

weixin_47457689的博客 500

Linux 下的system和popen

一、Linux system函数 system函数可以简单理解为利用system执行shell 命令 int system(const char *command); 1.源码简单分析 来看下面linux版system函数的源码: int system(const char * cmdstring) { pid_t pid; int status; if(cmdstring == NULL){ return (1); } if((pid = fork())

Heavysea的博客 1089

linux popen阻塞_Linux中system()函数与popen()函数

1. system()程序可以通过调用 system() 函数来执行任意的shell命令。同样这个Shell命令执行的输出会打印在终端上。\#include int system(const char* command);system()库函数通过fork出一个子进程,并且让子进程通过execl()程序替换来执行对应的 shell 命令。问题是替换成什么程序可以执行shell命令呢?答案是 /bi...

weixin_39972151的博客 1164
上一篇: Linux之进程控制
下一篇: Linux之自主实现minishell重定向功能
Python_programer
博客等级 码龄9年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值