文档章节

Head First C 第九章 进程与系统调用 exec函数

AlexTuan
 AlexTuan
发布于 2016/04/03 12:06
字数 514
阅读 42
收藏 2

Head First C 第九章 进程与系统调用 exec函数

系统调用

C程序无论做什么,都要靠操作系统。如果它想与硬件打交道,就要进行系统调用 系统调用是操作系统内核的函数。

什么是内核? 在大部分计算机上,系统调用就是系统内核中的函数。

exec函数

exec函数通过运行其他程序来替换当前进程

进程是程序在存储器上的一个实例。

exec函数有很多,可以分成两种,列表函数数组函数

  1. 列表函数以参数列表的形式接收命令行参数。
    1. 包含execl(),execle(),execlp()
    2. 程序:第一个参数告诉exec()将运行什么程序,对于execl(),execle()来说,是程序的完整路径,对execlp()来说,是命令的名字。
    3. 命令行参数:你需要依次列出想使用的命令行参数,别忘了,第一个命令行参数必须是程序名,也就是说,execl系的函数,前两个参数都是程序名。
    4. NULL:要在最后一个命令行参数后加上NULL,告诉函数没有其他参数了。
    5. 环境变量:如果有的话。如果是execle(),则可以传递一个环境变量字符串数组{"POWER=4","JUICE=peach and apple",NULL}注意环境变量字符串数组也要以NULL结尾。
  2. 数组函数以数组的形式接收命令行参数。
    1. 包含exev(),exevc(),exevp()
    2. 跟列表函数不同之处在于,传递命令行参数的形式是数组。
  3. exec函数中l v e p代表的含义
含义 字符
参数列表 l
参数数组/向量 v
根据PATH查找 p
环境变量 e
  1. exec()函数调用成功后,旧的程序在exec()语句之后的代码将不会执行。
代码

exec function sample

© 著作权归作者所有

AlexTuan
粉丝 4
博文 27
码字总数 17966
作品 0
程序员
私信 提问
Head First C 第九章 进程与系统调用 用fork()+exec()运行子进程

Head First C 第九章 进程与系统调用 用fork()+exec()运行子进程 问题引入:当你想循环使用exec调用另外一个程序时,发现只调用了一次就结束了。这是因为,exec函数通过运行新程序来替换当前...

AlexTuan
2016/04/04
69
0
Head First C 第九章 进程与系统调用 出错处理

Head First C 第九章 进程与系统调用 出错处理 大多数的系统调用以相同的方式出错 需求:想知道系统调用为什么会失败,因此所有的系统调用都遵循“失败黄金法则”。 尽可能的收拾残局 把err...

AlexTuan
2016/04/04
33
0
从零开始UNIX环境高级编程(7):进程环境

0. 引言 在学习进程控制前,先了解进程运行的环境,如:main函数是如何被调用的;命令行参数是如何传递给新程序的;程序在内存空间中是什么样的结构;进程的终止方式等。 1. main函数 1.1 程...

伤口不该结疤
2017/04/24
0
0
UNIX环境高级编程 第十章:信号

什么是异步事件:简单点来说,就是,你一边看书,又一边在听歌。两者之间互不干扰。编程中最常见的异步事件,就是ajax调用。页面没有刷新,但某个局部已经更新。你打开淘宝,你会发现,页面先...

qiangzhenyi1207
2018/01/16
0
0
Linux执行ls,会引起哪些系统调用

从一个问题说起 Linux执行ls,会引起哪些系统调用? A. nmap B. read C. execve D. fork 答案是read、exec系列 首先我们讨论一下什么是系统调用(system calls)? 用户借助UNIX/linux直接提...

realsa
2016/06/23
473
0

没有更多内容

加载失败,请刷新页面

加载更多

【TencentOS tiny】深度源码分析(4)——消息队列

消息队列 在前一篇文章中【TencentOS tiny学习】源码分析(3)——队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的,那么我们今天来看看消息...

杰杰1号
7分钟前
1
0
Hive

这就是那个 JAVA 类 package cn.itcast.bigdata;import java.util.HashMap;import org.apache.hadoop.hive.ql.exec.UDF;public class PhoneNbrToArea extends UDF{privat......

Garphy
8分钟前
2
0
Springboot开发,第二天

SpringBoot学习,第二天 目录:1、Springboot整合Listener 2、Springboot访问静态资源 3、异常处理 4、热部署 一、SpringBoot整合Listener 两种方式完成组件的注册 1、通过注解扫描完成组件的...

有一个小阿飞
11分钟前
3
0
BeginnersBook Perl 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
24分钟前
2
0
我的Java秋招面经大合集

阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我...

Java技术江湖
29分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部