![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统编程
liuzker
热爱
展开
-
Linux常见基础命令1
Linux常见基础命令1ls 用法: ls [选项] [文件名] 功能: 对于目录可以列出目录下的所有文件,对于文件列出文件名及其详细信息。 常用选项详解:ls -a : -a, --all do not ignore entries starting with .**列出所有文件,包括隐藏文件****例子**[liu@localhost 进...原创 2018-08-15 17:23:48 · 124 阅读 · 0 评论 -
重温Linux中的共享内存通信方式
一直在为找大三的实习做准备,很长一段时间都没有更新我的CSDN了,期间主要就是画思维导图来实现构建知识体系,思维导图的链接:https://gitee.com/lemaliu/my_computer_knowledge_system,现在终于有时间安心静下来好好沉淀沉淀了。经过这段时间的面试,发现共享内存被问的频率虽然不高,但一直对它没有一个深刻的理解,认为就是Linux下进程间通信的一种方式...原创 2019-04-06 11:00:48 · 506 阅读 · 0 评论 -
TCP多主机聊天程序
一台服务器的一个服务端为多台主机的客户端提供TCP服务项目。多进程实现多进程服务端代码 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <sys/types.h> 5 #inc...原创 2018-09-23 19:15:19 · 164 阅读 · 0 评论 -
进程信号
进程信号的产生方式:硬件中断当用户按下某些按键时,想进程发送的信号ctrl + c / ctrl + | 等硬件异常访问非法地址空间,cpu运算出错等kill 命令kill -n pid软件条件产生kill函数raise函数alarm函数sigqueue函数 后文会一一讲到查看所有的信号 kill -l 命令[...原创 2018-09-02 20:19:37 · 147 阅读 · 0 评论 -
System V 进程间通信之消息队列
消息队列的基本模型 消息队列中有两个数据结构msqid_ds消息队列数据结构:描述着整个消息队列的属性包括:消息队列的权限,消息队列的拥有者,指向消息队列第一个以及最后一个成员的指针msg消息队列的主体数据结构包括:消息类型,消息大小,消息位置以及下一消息。 60 #define MSG_MEM_SCALE 32 61 62 #define MSGMNI 16 ...原创 2018-08-25 19:52:24 · 170 阅读 · 0 评论 -
进程间通信之PIPE无名管道,文件重定向以及综合操作
在之前的进程控制中,常会用到 | 将两个命令连起来来进行对显示信息的筛选,从而改变标准的标准输出方式。[liu@localhost ~]$ ps -ef | grep 'ssh'root 2329 1 0 04:20 ? 00:00:00 /usr/sbin/sshdroot 3378 2329 0 04:28 ? 00:00:...原创 2018-08-24 20:53:27 · 556 阅读 · 0 评论 -
模拟实现Shell
模拟实现shell实现shell,需要做到以下四点:接收带空格的字符串解析字符串,实现做到遇到空格则发生截断,再将其放入子进程的参数列表创建一个子进程进行进程替换,实现用户的功能父进程等待子进程结束,退出程序 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h&...原创 2018-08-21 21:36:24 · 1545 阅读 · 0 评论 -
进程控制3(进程替换)
进程替换在fork之后,产生的子进程会拥有和父进程相同的代码段和数据段,执行父进程相同的公共代码,但是多数情况下我们不会让子进程做与父进程相同的工作,这样就会用到进程替换的概念。 进程替换可以使用exec函数族来完成替换工作 exec族函数在man手册的资料: int execl(const char *path, const char *arg, ...): ...原创 2018-08-21 19:39:36 · 137 阅读 · 0 评论 -
POSIX 文件及目录管理1
POSIX 文件及目录管理1.文件流与文件描述符的区别 在C库中,实现了对系统IO接口的封装,使得用户更加方便使用,但是不管如何实现,最终都要通过内核实现对文件的读写控制。下面举个例子来看一下C库与系统中对于标准输入,标准输出与标准错误的头文件定义//C库[liu@localhost /]$ cat /usr/include/stdio.h | grep '_IO_FILE*...原创 2018-08-24 15:02:49 · 1017 阅读 · 0 评论 -
进程
进程和程序 进程时程序的实体化,程序被储存在磁盘当中,当程序被加载到内存当中(执行起来),操作系统利用PCB将进程描述起来,Linux下PCB是:task_struct task_struct是一种数据结构,用来描述进程,包含进程的各种信息,包括进程号PID 状态 优先级等等很多信息 9 task_struct包含的信息: 10 标识符 : pid 11 状态 : 就绪,...原创 2018-08-17 18:19:31 · 441 阅读 · 0 评论 -
进程间通信之FIFO有名管道
无名管道的概念 无名管道是临时的,在完成通信后自动消失,因为文件描述符只在某个进程中可见,所以无名管道只能用于具有亲缘关系的进程之间的通信。 有名管道FIFO是一种特殊的文件机制,依赖于文件系统,可以实现任意进程之间的通信。用shell创建有名管道[liu@bogon 07]$ cat pipe.c > fifo 发生阻塞等待启动另一终端:[liu@bogon 07...原创 2018-08-27 11:43:48 · 265 阅读 · 0 评论 -
进程控制2(进程等待,status参数分析,阻塞非阻塞等待状态分析)
进程等待进程等待的必要性 当子进程退出而父进程继续工作不回收子进程资源,那么就会产生僵尸进程。僵尸进程危害很大,kill -9 也无法杀死僵尸进程当子进程完成工作后父进程需要直到子进程是否完成,是否异常父进程需要等待子进程的退出信息来回收子进程的所有资源,避免资源泄露 进程等待方法 调用系统调用接口waitpid_t wait(int *status);参数s...原创 2018-08-19 19:56:03 · 11993 阅读 · 0 评论 -
进程控制1(进程创建,进程终止)
进程创建fork()与vfork()fork()//man手册pid_t fork(void);fork() creates a new process by duplicating the calling process. The new process, referred to as the child, is an exact duplicate o...原创 2018-08-19 17:56:21 · 613 阅读 · 0 评论 -
进程地址空间
进程的地址空间背景 Linux32位操作系统内核版本:Linux version 2.6.32-754.3.5.el6.i686 Linux可执行程序文件空间布局 查看文件结构命令 size + 可执行文件名 size - list section sizes and total size. The GNU size utility lists the se...原创 2018-08-19 15:33:14 · 4098 阅读 · 0 评论 -
System V 进程通信之共享内存
共享内存IPC原理 共享内存是在内存中单独开辟的一段内存空间,这段内存空间有自己的数据结构,包括访问权限,空间大小和最近一次的访问时间等等,数据结构定义如下:49 /* Data structure describing a shared memory segment. */ 50 struct shmid_ds 51 { 52 struct ipc_perm sh...原创 2018-08-26 13:29:02 · 206 阅读 · 0 评论 -
进程2
孤儿进程孤儿进程在Linux操作系统中不包含,指的是父进程在子进程退出之前先行退出的一种特殊状态,产生孤儿进程之后,孤儿进程被0号进程init所领养例子 :1 #include <unistd.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 int main(void) 6...原创 2018-08-19 13:18:16 · 124 阅读 · 0 评论 -
Json在工作中的使用总结
Jsoncpp的使用原创 2019-06-28 01:35:21 · 211 阅读 · 0 评论