在实现linux管道命令的shell程序的时候,在主函数里面创建了两个子进程,l都调用了execvp函数来执行命令,但是很奇怪的是,当命令可以执行的时候,程序正常执行,子进程也是每次都正常退出,但是如果命令无法识别,子进程就无法退出,所以每次出现这种情况,要调用exit命令(该exit命令是在父进程里面调用的,shell程序判断接收到的字符串为“exit”时即退出整个程序)退出整个程序的时候,总是要多输几次exit。后来才打印了exit时候的进程的pid,发现基本上是要输入三次exit才能退出,因为前两次是退出创建的两个子进程,最后一次才是退出父进程,但是按道理来说不管怎样,进程的代码执行完了就应该退出的,但是这个偏偏没有退出。
       后来才知道如果命令执行失败,即execvp函数执行失败的时候,子进程是无法正常退出的,需要用exit强制退出该子进程,所以这时候就需要加个判断,当execvp执行失败返回-1时,调用exit(0)来退出子进程,不然该进程还是在那里,导致后边的shell程序无法正常执行。

关于Linux下C语言编程execvp函数的一个问题相关推荐

  1. linux+下c语言编程项目,精通UNIX下C语言编程与项目实践

    cc -I  //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编译 ...

  2. Linux下C语言编程-进程的创建

    Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...

  3. 您知道Linux下C语言编程的一些注意事项吗_教育中国

    您知道Linux下C语言编程的一些注意事项吗_教育中国 云风的 BLOG: 一个 C 接口设计的问题 一个 C 接口设计的问题 C 语言在本质上,参数传递都是值传递.不像 Pascal 和 C++ 可 ...

  4. linux c语言 ppt,Linux下C语言编程.ppt

    Linux下C语言编程 Linux中C语言的重要性 Linux和C天生有不解之缘. Linux操作系统的内核主要是用C写的,另外Linux下的很多软件也是用C写的,特别是一些著名的服务软件,比如MyS ...

  5. Linux下C语言编程

    第1章 Linux下C语言编程简介 本章将简要介绍一下什么是Linux,C语言的特点,程序开发的预备知识,Linux下C语言开发的环境,程序设计的特点和原则以及编码风格等.通过本章的学习,可以对在Li ...

  6. 初识Linux下C语言编程

    本章将简要介绍一下什么是Linux,C语言的特点,程序开发的预备知识,Linux下C语言开发的环境,程序设计的特点和原则以及编码风格等.通过本章的学习,可以对在Linux下使用C语言编程有一个基本的了 ...

  7. linux下C语言编程操作数据库(sqlite3)

    前言:C语言中通过调用 sqlite 的函数接口来实现对数据库的管理(创建数据库.创建表格.插入数据.查询.数据.删除数据等),掌握sqlite数据库的语法,以及sqlite提供的函数接口,那么在li ...

  8. linux c语言工具,Linux下C语言编程环境的工具.doc

    Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 Linux下C语言编程环境的工具 要想在Linux下进行C语言编程,首先得搭建好一个编程环境.这里分别说明一下几个非常有用的软件包. ...

  9. linux下c语言编程书籍6,Linux下C语言编程-6.pdf

    永远的下语言编程基础知识 页码, 首页编程技术正文 L inux下C语言编程 - -基础知识 作者 前言 这篇文章介绍在下进行语言编程所需要的基础知识在这篇文章当中我们将会学 内容 源程序编译 的编写 ...

最新文章

  1. linux lz4 lzo,Linux六大压缩算法横评:Ubuntu 19.10最终选择LZ4
  2. restTemplate的介绍和使用
  3. Python进行数据分析—可视化之seaborn
  4. MySQL教程(三)—— MySQL的安装与配置
  5. Qt工作笔记-通过信号与槽实现定时器
  6. 关于OPENGL与OPENGL ES的区别
  7. nodejs 任务调度bull 测试解析
  8. 翻译: Python range 函数指南 -- 从入门到精通
  9. Python黑帽子_hack与渗透测试编程之道 第三章代码
  10. 安装win11,跳过TPM2.0限制
  11. Embedded Coder 快速入门
  12. Python数据分析-绘图-2-Seaborn进阶绘图-7-网格图
  13. 读书笔记|| 类继承
  14. 计算机重启没有用户名,电脑重启之后图标没了怎么办
  15. ubuntu安装sdkman
  16. flex实现自定义鼠标
  17. Zuul、Gateway与Nginx的区别
  18. 盘点2022初级Java笔试题,选择题,简答题(右滑查看答案)
  19. JavaScript - Array对象的使用 及 数组排序 sort
  20. 国培-甘肃定西市新任职校长培训班莅临湖南省智慧教育装备展示体验中心参观学习

热门文章

  1. PHP preg_match()函数
  2. autodl 网盘下载transformers内置包很慢解决办法
  3. 10005---热部署
  4. IDEA中怎么创建xml文件
  5. 改善内部客户服务的 3 个技巧
  6. 客户关系维护注意事项 如何维护客户关系
  7. 深度学习中Concat层和Flatten层作用
  8. 猿创征文|我的Python成长之路
  9. (大佬)睿智的目标检测13——Keras搭建mtcnn人脸检测平台
  10. Pytorch混合精度训练