Linux系统编程
一步步学习Linux系统编程
shanghx_123
努力成为一名优秀的程序员
展开
-
Linux系统编程---进程间通信-管道
从今天开始,我们来系统总结下Linux下进程之间通信的方式。在此之前,我们来谈谈进程间为什么要进行通信?进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控...原创 2018-11-27 16:39:14 · 409 阅读 · 0 评论 -
Linux系统编程--实现简单shell
上个博客我们讲了进程如何替换,以及exec函数族是,接下来我们来应用这些函数以及之前学的知识来实现一个简单shell。如果不太清楚,请先看看之前的内容;1.进程创建2.进程等待3.进程替换我们先看系统的shell是如何实现?我们敲一行命令,然后按回车,这个命令就被执行,玩了之后他他又返回到原来的状态,这个命令还可以加上选项,例这些选项之间用空格间隔开。并且空格可以是多个。如下图,从...原创 2018-11-03 20:17:02 · 601 阅读 · 0 评论 -
Linux系统编程---进程替换
进程替换我们知道,在 Windows 平台下,我们可以通过双击运行可执行程序,让这个可执行程序成为一个进程;而在 Linux 平台,我们可以通过 ./ 运行,让一个可执行程序成为一个进程。但是,如果我们本来就运行着一个程序(进程),我们如何在这个进程内部启动一个外部程序,由内核将这个外部程序读入内存,使其执行起来成为一个进程呢?这里我们通过 exec 函数族实现。并且,我们通常fork一个...原创 2018-11-03 17:01:59 · 203 阅读 · 0 评论 -
Linux系统编程---进程等待
进程等待1.为什么需要进程等待我们知道,子进程退出,父进程如果不管不顾,那么子进程就可能变为僵尸进程,进而占用系统资源,造成内存泄漏,另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill-9也无能为力,因为谁也办法杀死一个已经死去的进程。有时候我们需要知道父进程派给子进程的任务完成的如何如,子进程运行完成,结果对还对,或者是否正常退出。在这些情况,我们需要等待子进程执行完。...原创 2018-11-02 12:30:29 · 306 阅读 · 0 评论 -
Linux系统编程---进程终止
进程终止进程的退出有三种场景:代码运行完毕,结果正确代码运行完毕,结果不正确代码异常终止进程退出方法从main返回调用exit函数调用_exit函数ctrl + c :x信号终止其中前三种为正常退出,而第四种是异常退出。在终端可以使用命令 “echo $? ”查看进程退出码接下来我们来看进程推出的函数有哪些_exit函数#include <u...原创 2018-10-30 21:01:33 · 969 阅读 · 0 评论 -
Linux系统编程 ---系统调用
系统调用系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/0传输以及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。通常,一个操作系统提供的系统调用命令有几十乃至上百条之多。这些系统调用按功能大致可分为如下几类:设备...原创 2018-10-20 21:56:00 · 516 阅读 · 0 评论 -
Linux下如何从用户态切换到内核态?
首先我们得明白什么是用户态和内核态?明白这两个概念之前,我们得知道用户空间和内核空间。用户空间:指的就是用户可以操作和访问的空间,这个空间通常存放我们用户自己写的数据等等;而内核空间则是系统内核来操作的一块空间,这块空间里面存放系统内核的函数、接口等。不管对于Linux还是Windows, 他们都具有自己用户空间和内核空间。当一个程序运行时,如果它是在用户空间下执行,我们把此时运行得程序的这...原创 2018-10-18 19:39:10 · 19493 阅读 · 1 评论 -
Linux---创建进程(fork和vfork的区别)
fork函数首先来看下函数原型:#include &amp;amp;amp;lt;unistd.h&amp;amp;amp;gt; //头文件 pid_t fork(void); //返回值:成功时父进程返回子进程的id,子进程返回0;失败时父进程返回-1我们可以用一段程序来测试fork函数的特点#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&原创 2018-08-28 16:10:20 · 2163 阅读 · 0 评论