linux基础知识——exec函数

1.exec函数

\qquadfork()函数在执行之后,父子进程其实还是执行同一个程序,不同的只是同一个程序的不同分支。如果要想让子进程执行另外一个不同的程序,这时候需要调用exec函数,这时候子进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。fork创建新进程,exec并不创建新进程。

2.execlp函数

\qquad加载一个进程,借助PATH环境变量。

#include <stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{pid_t pid;pid = fork();if(pid==-1){perror("fork error");exit(1);}else if(pid==0){execlp("ls"," ","-l","-h",NULL);}return 0;
}

\qquad运行结果:

-rwxrwxr-x 1 linux linux 16824 1121 17:49 exec1
-rw-rw-r-- 1 linux linux   251 1121 17:46 exec1.c
-rw-rw-r-- 1 linux linux   375 1121 16:10 fork.c

3.execl函数

\qquad加载一个进程,通过程序名+路径来加载

//加载/usr/bin/ls
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{pid_t pid;pid = fork();if(pid==-1){perror("fork error");exit(1);}else if(pid==0){execlp("/usr/bin/ls","a","-l",NULL);}return 0;
}

\qquad还可以加载自己写的程序。

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{pid_t pid;pid = fork();if(pid==-1){perror("fork error");exit(1);}else if(pid==0){execlp("/home/linux/1_CreateProcess/hello"," ddd",NULL);}return 0;
}

\qquad/home/linux/1_CreateProcess/hello下的可执行程序的c代码程序hello.c如下:

#include<stdio.h>
int main()
{printf("hello world!\n");return 0;
}

4.练习:将当前进程打印到文件中

#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>int main()
{int fd;fd = open("psout",O_WRONLY|O_CREAT|O_TRUNC,0644);if(fd<0){perror("open psout error");exit(1);}dup2(fd,STDOUT_FILENO);execlp("ps"," ","ax",NULL);close(fd);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner发布2022年重要战略技术趋势

来源&#xff1a;Gartner公司Gartner于今日发布企业机构在2022年需要探索的重要战略技术趋势。分析师们在本周四举行的Gartner IT Symposium/Xpo峰会美洲站期间公布了他们的研究结果。Gartner研究副总裁David Groombridge表示&#xff1a;“首席执行官和董事会正在设法通过与客…

【计算机网络复习 数据链路层】3.1 数据链路层功能概述

数据链路层功能概述一、数据链路层基本概念二、数据链路层功能概述一、数据链路层基本概念 结点&#xff1a; 主机、路由器 链路&#xff1a; 网络钟两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路&#xf…

爬虫 --通用篇

概述 爬虫是合法的吗? 是的,它是一个计算机的学科!一个工具 什么是爬虫? 通过编写程序,模拟浏览器上网,然后让其去互联网上爬取/获取数据的过程.爬虫爬取的也就是服务端的响应数据 爬虫使用场景的分类 - 通用爬虫 : 爬取一整张页面数据."抓取系统" - 聚焦爬虫 : 爬…

【计算机网络复习 数据链路层】3.2 封装成帧和透明传输

封装成帧和透明传输一、封装成帧二、透明传输一、封装成帧 封装成帧就是在一段数据的前后部分添加首部和尾部&#xff0c;这样就构成了一个帧。接收端在收到物理层上交的比特流后&#xff0c;就能根据首部和尾部的标记&#xff0c;从收到的比特流中识别帧的开始和结束。 首部…

linux基础知识——僵尸进城和孤儿进程

1.什么是孤儿进程&#xff1f; \qquad父进程先于子进程结束&#xff0c;则子进程成为孤儿进程。父进程结束后&#xff0c;子进程的父进程由init进程接替。 #include<stdio.h> #include<unistd.h> #include <stdlib.h>int main() {pid_t pid;pid fork();if(…

新一代人工智能:从“感知智能”向“认知智能”转化

来源&#xff1a;光明网 《光明日报》&#xff08; 2021年05月25日 09版&#xff09;新一代人工智能正在逐步从感知智能向认知智能转化——这是全国政协副主席、中国科协主席万钢在第五届世界智能大会上作出的判断。“感知智能是机器具备了视觉、听觉、触觉等感知能力&#xf…

迷宫城堡 强连通

Problem Description为了训练小希的方向感&#xff0c;Gardon建立了一座大城堡&#xff0c;里面有N个房间(N<10000)和M条通道(M<100000)&#xff0c;每个通道都是单向的&#xff0c;就是说若称某通道连通了A房间和B房间&#xff0c;只说明可以通过这个通道由A房间到达B房…

【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)

差错控制&#xff08;检错编码&#xff09;一、差错从何而来&#xff1f;二、数据链路层的差错控制2.1 奇偶校验码2.2 CRC循环冗余码一、差错从何而来&#xff1f; 概括来说&#xff0c;传输中的差错都是由于噪声引起的。 全局性&#xff1a;由于线路本身电气特性所产生的随机…

linux基础知识——wait函数和waitpid函数回收子进程

1.wait函数回收子进程 \qquad父进程可以调用wait()函数回收子进程的终止信息。wait函数有三个功能&#xff1a; \qquad阻塞等待子进程退出 \qquad回收子进程残留资源 \qquad获取子进程结束状态&#xff08;退出原因&#xff09; #include<stdio.h> #include<unistd.h…

从“元宇宙”热炒中理性看待我国虚拟现实产业发展

来源&#xff1a;工信头条作者&#xff1a;袁钰&#xff08;赛迪顾问、电子信息产业研究中心、分析师&#xff09;2021年4月以来&#xff0c;元宇宙概念大热&#xff0c;国内外巨头企业围绕“元宇宙”加快布局&#xff0c;作为元宇宙核心技术之一的虚拟现实也被寄予厚望。经数据…

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描

2018-2019-2 网络对抗技术 20165332 Exp6 信息搜集与漏洞扫描 基础问题回答 基础问题回答 &#xff08;1&#xff09;哪些组织负责DNS&#xff0c;IP的管理。 答&#xff1a;目前全球有5个地区性注册机构&#xff1a; ARIN主要负责北美地区业务 RIPE主要负责欧洲地区业务 APNIC…

【计算机网络复习 数据链路层】3.3.2 差错控制(纠错编码)

差错控制&#xff08;纠错编码&#xff09;一、海明码1.1 确定校验码位数r1.2 确定校验码和数据的位置1.3 求出校验码的值1.4 检错并纠错一、海明码 **海明码&#xff1a;**发现双比特错&#xff0c;纠正单比特错。 1.1 确定校验码位数r 海明不等式&#xff1a; r 为冗余信…

Nature封面重磅!剑桥大学团队揭开老年痴呆背后的罪魁祸首

来源&#xff1a;naturetau蛋白异常是老年痴呆症的重要病因。英国剑桥大学Sjors H. W. Scheres、Michel Goedert等研究人员在Nature上发文&#xff0c;基于不同的蛋白折叠结构对「tau蛋白病」进行分类&#xff0c;荣登Nature封面。听说过阿尔茨海默病吗&#xff1f;没有。老年痴…

linux基础知识——IPC之管道

1.IPC \qquadlinux环境下&#xff0c;进程的地址空间相互独立&#xff0c;每个进程都有各自不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到&#xff0c;所以进程之间不能直接互相访问&#xff0c;进程间要想交换数据只能通过内核&#xff0c;在内核中开辟…

速度比晶体管快1000倍,新型单光子开关登上Nature

来源&#xff1a;机器之心作者&#xff1a;CHARLES Q. CHOI一种新型光学开关每秒钟的运行次数达到 1 万亿次&#xff0c;要比现在商用的顶级硅芯片快100到1000倍&#xff0c;这项研究未来或许可以催生出基于光而不是电的新一代计算机。在如今人们应用最为广泛的计算机架构中&am…

【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

流量控制与可靠传输机制一、数据链路层的流量控制二、流量控制的方法三、可靠传输、滑动窗口、流量控制一、数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配&#xff0c;会造成传输出错&#xff0c;因此流量控制也是数据链路层的一项重要工作。 数据链路层的流量…

linux的驱动开发——简单驱动程序编写

1.字符设备驱动介绍 \qquad字符设备驱动是linux驱动中&#xff0c;最基本的一类设备驱动&#xff0c;字符设备就是按照一个字节一个字节的方式进行读写操作的设备。读写数据分先后顺序&#xff0c;我们常见的单片机外设&#xff0c;比如led灯、按键、I2C、SPI、LCD等等都属于字…

【计算机网络复习 数据链路层】3.4.2 停止-等待协议

停止-等待协议一、停等协议1.1 无差错情况1.2 有差错控制1.4 停等协议性能分析一、停等协议 1、为什么要有停止-等待协议&#xff1f; 除了比特出差错&#xff0c;底层信道还会出现丢包问题。 丢包&#xff1a; 物理线路故障、设备故障、病毒攻击、路由信息错误等原因&#…

6G目前进展与未来展望

来源&#xff1a;6G俱乐部摘要&#xff1a;随着5G的大规模商用&#xff0c;6G研究也成为了移动通信行业新的研究热点。全球通信发达的国家和地区纷纷出台6G研发规划。面向2030年&#xff0c;如何定义6G&#xff0c;如何支撑6G突破现有技术的束缚&#xff0c;构建全新的能力体系…

一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)

摘要&#xff1a;本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件&#xff0c;然后单击顶部“文件”菜单中的“新建”功能&#xff0c;我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始&am…