![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 58
Young_LAS
一点一点的成长
展开
-
Linux下的C语言-小白篇(一)
Linux下的C语言-小白篇(一)C语言对于大家来说并不陌生,编写C语言更是不在话下,如果你说自己写不出多么惊艳的C代码,那起码还是能写出一个“Holle Word”的嘛,今天我将带大家更进一步的了解C语言,从基层了解C语言的整个形成过程,其中包括C的编辑,编译,链接等方面。在这里如果现在让你来编一个C程序,大家想到的肯定是使用VC++6.0或者是Visual Studio系列等Windons下的I原创 2017-10-22 21:02:16 · 488 阅读 · 0 评论 -
Linux共享内存-进程间通信
linux中进程间通信的方法有不少,一般的进程间通信是通过linux内核来完成的,每次信息的交流都先传递给内核,由内核在转给另外一个进程。因此在执行过程中,不断的由用户态到内核态,再由内核态到用户态,消耗的资源非常大。因此共享内存的出现大大的解决了这个问题,共享内存的实现仅仅在开始从内核中申请一段内存,借助这块内存,之后全部都是在用户态下完成的,由于不再由资源转换方面的浪费,使得进程间通信的速...原创 2018-06-11 11:36:49 · 188 阅读 · 0 评论 -
Linux网络编程 udp套接字代码
udp部分的网络编程,主要分为3个部分,套接字的创建,端口号和ip地址的绑定,数据的读取和发送,我们一般创建两个文件,分别用来建立服务器和客户端。UDP服务器代码服务器的编写可以分为:udp套接字的创建,绑定端口号和ip地址,等待接受数据并处理。这里我们简单的做一个回显服务器,就是服务器接收到客户端发来的数据后不进行什么处理,直接将原数据返回给客户端。udp套接字创建说到网络编...原创 2018-06-06 17:48:35 · 761 阅读 · 0 评论 -
Linux网络编程 tcp套接字代码
本次介绍一下TCP协议下的套接字代码,总体来看,tcp协议比udp协议更加安全可靠,无论是从用户使用的角度还是从编写代码的角度,你会发现与udp不同的是tcp在每次通信前,服务器端和客户端都会进行一次连接,连接成功后,才可以进行相互间的通信。套接字APITCP套接字的API主要有以下几个://建立套接字int socket(int domain, int type, int pr...原创 2018-06-07 15:10:34 · 367 阅读 · 0 评论 -
Linux管道
在Linux中,管道是一个比较重要的概念,进程间通信的一种方法,管道分为两种,一种是匿名管道,一种是命名管道。匿名管道匿名管道的本质是内核中提供的的一段内存。匿名管道的的特性:用于有亲缘关系的进程半双工,单项通信,双向通信需要两个管道声明周期随进程有内置的同步互斥机制面向字节流匿名管道的创建非常简单,首先需要定义一个存放两个整形变量的数组:int df[2],用...原创 2018-06-01 21:46:08 · 1784 阅读 · 0 评论 -
Linux消息队列
Linux中的消息队列是进程间通信的一种方式,通过创建一个消息队列可以完成一个或者多个进程的信息交汇。因此,首先我们要了解消息队列是什么。消息队列的定义消息队列的本质其实是一个内核提供的链表,内核基于这个链表,实现了一个数据结构,并且通过维护这个数据结构来维护这个消息队列。向消息队列中写数据,实际上是向这个数据结构中插入一个新结点;从消息队列汇总读数据,实际上是从这个数据结构中删除一个结点...原创 2018-06-02 11:59:24 · 3067 阅读 · 1 评论 -
进程间通信-信号量集
通用代码#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.h>union _semun{ int val;};int...原创 2018-06-25 12:48:09 · 208 阅读 · 0 评论 -
Linux创建子进程- fork()和vfork()
forkfork()是Linux中在一个进程中创建一个子进程的系统调用。函数原型#include &amp;amp;amp;amp;lt;unistd.h&amp;amp;amp;amp;gt;pid_t fork(void);进程创建的一般过程1.给新进程分配一个标识符,在内核中分配一个PCB2.复制父进程的环境(不复制地址空间)3.分配资源(程序,数据,堆栈等)4.复制父进程的地址空间的内容5.将进程置成...原创 2018-07-16 10:50:38 · 1003 阅读 · 1 评论 -
TCP协议
TCP全称为“传输控制协议”,传输层协议,TCP是一种有链接的,传输速率慢,可靠性高的协议TCP协议段格式16位的源端口号: 发送方的端口号16位的目的端口号:接收方的端口号32位的序列号: 本次发送数据段的序列号32位的确认序列号:向对端表明自己接下来想要收到的序列号,且表明该确认序列号以前的数据段都无误接收到了4位首部长度,指最多有15(1111)个32位的比特位(...原创 2018-07-29 17:19:25 · 271 阅读 · 0 评论 -
64位 Linux操作系统下的类型大小
64位 Linux操作系统下的类型大小测试代码#include <iostream>using namespace std;int main(){ char _char = 'a'; short _short = 1; int _int = 1; float _float = 1.7; double _double = 3.4; long _...原创 2018-08-06 10:38:03 · 853 阅读 · 0 评论 -
exec进程替换
exec进程替换,替换的其实是进程的代码段,数据段,堆栈段。几种函数的使用情况: char* const argv[] = {"ls","-al", NULL}; char* const envp[] = {"PATH=/bin:/usr/bin","TERM=console",NULL}; // + l(list) 1.路径是绝对路径 // ...原创 2018-08-11 08:24:01 · 400 阅读 · 0 评论 -
封装fork/wait等操作, 编写函数 process_create()
封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 代码#include <stdio.h>#include <unistd.h>#include <sys/wait.h&g...原创 2018-04-06 18:17:23 · 233 阅读 · 0 评论 -
在Linux下实现自己的shell
代码#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/wait.h> char *argv[8]; int argc = 0; void do_shell() { pid_t pid; if((pid = fork()) ...原创 2018-04-06 16:40:28 · 692 阅读 · 0 评论 -
使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。
因为涉及main函数参数,所以在linux 下面比较容易实现int main(int argc, char *argv[], char *env[])main的三个参数 :int argc,表示命令行参数加上程序路径的个数,最小为一char * argv[],表示main函数的命令行参数char * env[],表示环境变量首先要判断mian()函数的参数个数,如果小于4即,参数个数错误,代原创 2017-11-28 16:33:01 · 1083 阅读 · 0 评论 -
Linux下的重要目录
文件:Linux下的重要文件包括有 /proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp /proc proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。/sys sys...原创 2018-03-24 10:14:17 · 134 阅读 · 0 评论 -
Linux上的重要命令
重要命令有:du, df, top, free, pstack, su, sudo(sudo -, sudo -s), adduser, password 命令 功能介绍 du 计算磁盘空间的使用情况 df 报告文件系统磁盘空间的使用情况 top 实时显示系统资源的使用情况 free 查看系统内存 pstack 可显示...原创 2018-03-24 10:23:15 · 143 阅读 · 0 评论 -
readelf命令
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示那些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。 运行readelf的时候,除了-v和-H之外,其它的选项必须有一个被指定。 ...原创 2018-03-30 15:29:03 · 2224 阅读 · 0 评论 -
Linux下模拟实现进度条,并且用Makefile文件管理
进度条progressbar.c#include<stdio.h>int main(void ){ char bar[ 101 ] = {" "}; int i =0; for(i=0; i<101; i++) { char ch[] = {"|/-\\"};...原创 2018-03-30 17:16:46 · 144 阅读 · 0 评论 -
Popen()函数
函数原型: #include <stdio.h> FILE *popen(const char *command, const char *type);popen介绍:popen() 函数用于创建一个管道:其内部实现为调用 fork 产生一个子进程,执行一个 shell以运行命令来开启一个进程这个进程必须由 pclose() 函数关闭。 用法://...原创 2018-04-11 16:37:39 · 748 阅读 · 0 评论 -
Linux-system函数
函数原型:#include <stdlib.h>int system(const char *command);函数介绍: system()执行通过调用/bin/sh -c命令指定的命令,并在命令完成后返回。在执行com-的过程中,命令SIGCHLD将被阻塞,SIGINT和SIGQUIT将被忽略。...原创 2018-04-11 16:42:47 · 134 阅读 · 0 评论 -
task_struct结构体
在linux中,每一个进程都有一个进程描述符,这个”进程描述符”是一个结构体名字叫做task_struct,在task_struct里面保存了许多关于进程控制的信息。 task_struct是Linux内核的一种数据结构,它会被装载到RAM里并包含进程的信息。每个进程都把它的信息放在task_struct这个数据结构里面,而task_struct包含以下内容: 标示符:描述本进程的唯一标示...原创 2018-04-06 13:21:40 · 361 阅读 · 0 评论 -
Linux模拟实现僵尸进程
Z(zombie)-僵尸进程 僵死状态(Zombies) 是一个比较特殊的状态。当进程退出并且父进程没有读取到子进程退出的返回代码是就会产生僵尸进程。 僵尸进程会以终止状态保存在进程表中,并且会一直等待父进程读取退出状态代码。 所以,只要子进程退出,父进程还在执行,但父进程没有读取子进程状态,子进程进入Z状态 模拟实现僵尸进程 代码//模拟实现僵尸进程...原创 2018-04-06 14:51:30 · 1680 阅读 · 0 评论 -
linux模式实现孤儿进程
孤儿进程 父进程如果提前退出,那么子进程就称之为“孤儿进程” 孤儿进程被1 号进程收养 模拟实现孤儿进程//模拟实现孤儿进程 #include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if( ...原创 2018-04-06 15:27:45 · 402 阅读 · 0 评论 -
Linux下的stat函数
stat 函数函数原型 #include <sys/stat.h>int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errnostruc...原创 2018-08-17 19:45:01 · 668 阅读 · 0 评论