
Linux
文章平均质量分 90
Chiang木
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux开发(十四):Linux拓展应用
目录一、POSIX 实现2G文件复制二、重定向编程1、dup实现2、dup2实现三、线程池实现四、ping功能实现五、原始套接字实现DOS攻击一、POSIX 实现2G文件复制想要实现2G大文件复制操作,必须需要系统的支持,因此,在头文件声明前,需要先定义宏 _LARGEFILE_SOURCE、LARGEFILE64_SOURCE、FILE_OFFSET_BITS或者在编译时,加入以下编译项: -D_LARGEFILE64_SOURCE -D_FILE_OFFSE.原创 2022-03-12 14:38:02 · 1602 阅读 · 0 评论 -
Linux开发(十三):守护进程
目录一、概述二、守护进程的创建1、顺序创建2、库函数daemon()三、守护进程出错处理一、概述Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。守护进程一般在系统启动时开始运行,除非强行终止原创 2022-03-12 13:40:33 · 1616 阅读 · 0 评论 -
Linux开发(十二):四中内存分配方式
1、malloc/free 函数malloc()函数和free()函数是在堆中申请或释放内存空间的,其函数声明如下:#include <stdlib.h>void* malloc(size_t _size);void free(void* _ptr);函数参数_size:堆中申请分配一个长度为_size字节的连续空间返回值:若分配成功,则返回一个指向该区域的首地址的指针,若申请失败则返回NULL2、realloc函数realloc函数是用来在堆中更改已经原创 2022-03-12 14:49:23 · 485 阅读 · 0 评论 -
Linux开发(十一):多进程通信与同步---管道通信
管道是Linux环境中历史最悠久的进程间通信方式,本质上,管道就是一个操作方式为文件的内存缓冲区。Linux上的管道分两种类型,分别为匿名管道(无名管道)和有名管道(命名管道)。目录一、匿名管道1、创建匿名管道2、注意事项3、代码示例二、有名管道1、管道创建(1) 命令行创建(2) 函数创建2、删除命名管道3、代码示例一、匿名管道匿名管道是一种特殊类型的文件,完全由操作系统管理和维护,因为其存储位置只有亲缘关系的进程知道,所以只能用于亲缘关系的进程..原创 2022-03-11 16:46:53 · 2355 阅读 · 0 评论 -
Linux开发(十):多进程通信与同步---信号
信号是进程间通信机制中唯一的异步通信机制,在实现上是一种软中断,信号可以导致一个正在运行的进程被中断,进而处理一个突发事件。目录一、信号表二、信号术语三、信号使用1、信号安装(1)signal()(2)sigaction()2、信号发送(1)kill函数(2)raise函数(3)alarm函数(4)abort函数(5)pause函数(6)sigqueue函数3、信号集操作函数4、信号阻塞函数四、注意事项一、信号表Lin...原创 2022-03-11 18:17:42 · 2025 阅读 · 0 评论 -
Linux开发(九):多进程通信与同步---共享内存
共享内存是进程间通信的一种最基本、最快速的机制。共享内存是两个或多个进程共享同一块内存区域,并通过该内存区域实现数据交换的进程间通信机制。通常是由一个进程开辟一块共享内存区域,然后允许多个进程对此区域进行访问。由于不需要使用中间介质,而是数据由内存直接映射到进程空间,因此共享内存是最快速的进程间通信机制。共享内存的最大不足之处在于,由于多个进程对同一块内存区具有访问的权限,各个进程之间的同步问题显得尤为突出。必须控制同一时刻只有一个进程对共享内存区域写入数据,否则将造成数据的混乱。但是同步控制的问题,可原创 2022-03-10 17:27:44 · 3139 阅读 · 0 评论 -
Linux开发(六):多线程编程API
一、什么是多线程线程是应用程序并发执行多个任务的机制,一个进程可以包含多个线程,且共享同一个全局内存区域,包括(未)初始化数据段、堆内存。多核处理器机器是可以支持多个线程真正意义上的多个线程并发执行。二、线程操作1、线程创建用户创建的线程数量不能超过RLIMIT_NPROC软资源限制,所有用户创建的总线程数也不能超过/proc/sys/kernel/threads_max内核参数定义的值。//from /usr/include/bits/pthread.hint pthread_..原创 2022-03-04 17:02:42 · 1130 阅读 · 0 评论 -
Linux开发(八):多进程通信与同步---消息队列
进程用户空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。一、消息队列消息队列实质上就是一个链表,该链表是由系统内核维护,读取消息时,不一定遵循先进先出原则, 也可以按消息的类型字段进行读取。1、获取key值Linux系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。key_t ftok( char * fname, int i原创 2022-03-09 18:19:58 · 1856 阅读 · 0 评论 -
Linux开发(七):多线程通信与同步
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用。 不过要注意的是线程间需要做好同步。一、互斥锁互斥锁也叫做互斥量,是一个二元变量,主要以排他的方式防止数据被并发访问。在访问共享资源前对互斥锁进行加锁,访问后释放互斥锁。若互斥锁已经被某线程加锁,其他试图再次对互斥锁加锁的线程都将会被阻塞直到当前线程释放该互斥锁。如果释放互斥锁时有一个以上的线程等待加锁,那么这些线程都将会变成可运行状态,但只有一个变线程可以对互斥量加锁,其他线程抢占失败,只能再次原创 2022-03-09 11:54:24 · 1554 阅读 · 1 评论 -
Linux开发(五):I/O多路复用
一、什么是I/O多路复用多路是指网络连接,复用指的是同一个线程。IO 多路复用是一种同步IO模型,实现一个线程可以监视多个文件句柄; 一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作; 没有文件句柄就绪就会阻塞应用程序,交出CPU。二、IO多路复用的三种实现1、select()函数select 函数监视的文件描述符分3类,分别是writefds、readfds、和exceptfds。调用后select函数会阻塞,直到有描述符就绪(有数据可读、可写、或者有异常),或者超时(ti原创 2022-03-08 17:26:16 · 1221 阅读 · 0 评论 -
Linux开发(四):网络编程API
本文主要介绍Linux网络编程时,用到的各个API,不涉及协议相关知识!一、网络编程API我们知道正常的CS架构,包含以下内容:下面依次介绍以上用到的各个API。1、socket()函数创建网络套接字。#include<sys/types>#include<sys/socket.h>int socket(int domain, int type, int protocol);函数参数:domain:该socket要使用的地址协议簇,常用选项原创 2022-03-07 17:30:12 · 3836 阅读 · 2 评论 -
Linux开发(二):缓冲区
一、缓冲区类型标准I/O为我们提供了3种类型的缓冲区:全缓冲区、行缓冲区、无缓冲区。(1)全缓冲区:这种缓冲区默认大小为BUFSIZ,具体大小与系统定义有关。在缓冲区满或主动调用fflush()函数后,才进行真正的I/O操作,普通磁盘文件的写操作通常使用全缓冲区访问。// from /usr/include/stdio.h#ifndef BUFSIZ#define BUFSIZ _IO_BUFSIZ // BUFSIZ全局宏定...原创 2022-03-08 15:21:12 · 1374 阅读 · 0 评论 -
Linux开发(三):文件I/O
一、系统调用系统调用函数是操作系统为内核代码提供给用户或上层使用的一些函数接口,调用在用户态,执行在内核态。1、open()函数打开或创建一个文件.#include <fcntl.h>int open(const char *pathname,int flag, mode_t mode);函数参数:pathname: 要打开或创建文件的路径+名字flag: 打开的方式,有以下几种方式:O_RDONLY:只读 O_WRONLY:只写 O_RDWR:可读可写原创 2022-03-07 11:54:52 · 1325 阅读 · 0 评论 -
Linux开发(一):Linux进程的内存布局
下图是一张32位x86架构上运行的Linux中进程标准的内存段布局, 通过该图从上至下的简要分析Linux中进程的内存分布情况和各自的大致用途:一、内核空间对于32位X86架构上运行的Linux进程而言, 其虚拟地址空间的寻址范围从0 ~ 4G,内核将这块空间划分为两个部分,将最高的1G字节0xC0000000 ~ 0xFFFFFFFF称为“内核空间”, 顾名思义是提供给内核使用;而将较低3G字节0x00000000 ~ 0xBFFFFFFF称为“用户空间”,即提供给各个运行的进程使用。..原创 2022-03-04 14:39:39 · 2343 阅读 · 0 评论