![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 73
CeHi
这个作者很懒,什么都没留下…
展开
-
Linux系统编程——标准IO
文件IO与标准IO的区别 文件IO:是直接调用内核提供的系统调用函数,头文件是unistd.h 标准IO:是间接调用系统函数,头文件是stdio.h 三个缓存概念 用户空间缓存 程序中的缓存,可以是定义的数组变量 内核空间缓存 我们打开一个文件,内核在内核空间都会开辟一块缓存,这个叫内核空间缓存 文件IO的写即时将用户空间中的缓存写到内核空间的缓存中 文件IO的读即是将内核空间中的缓存写到用户空间的缓存中 库缓存 printf满足一定的条件:遇到\n时,即会将缓存的内容写到内核中,即调用了系统俺叔原创 2021-12-20 13:31:18 · 139 阅读 · 0 评论 -
Linux系统编程——文件IO
文件IO 应用层 ,内核层,硬件层 Input Output 所谓输入输出是站在应用层来看的,所谓输入就是内核输入到应用,输出指用户数据传到内核。输入输出涉及到文件IO。 open 打开或创建一个文件。 //在fcntl.h文件中声明。函数作用:创建或打开某一个文件。 /** 第一个参数:char* 包含有文件名和路径 第二个参数:打开文件的方式 flag: O_RDONLY 只读 O_WRONLY 只写 O_RDWR 读写 O_CREAT 创建一个文件 O_EXIT 如果使用O原创 2021-12-20 13:31:02 · 83 阅读 · 0 评论 -
Linux系统编程——进程之间通信 无名管道&有名管道
进程通信:在用户空间实现进程通信是不可能的,通过Linux内核通信 线程通信:可以在用户空间就可以实现,可以通过全局变量通信。 进程案例代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(){ pid_t pid; pid = fork(); if (pid == 0) //子进程 { int i = 0; for原创 2021-12-20 13:30:49 · 631 阅读 · 0 评论 -
Linux系统编程——套接字socket
Socket socket(套接字)实质上提供了进程通信的端点,进程通信之前,双方首先必须建立各自的端点,否则是没有办法通信的,通过socket将IP地址和端口绑定之后,客户端就可以和服务器通信了。 当我们访问套接字时,需要访问文件一样使用文件描述符。 创建一个套接字可以使用**socket()**函数 #include <sys/socket.h> int socket(int domain,int type, int product) 返回值: 成功返回套接字文件描述符。 失败返回-1;原创 2021-12-20 13:30:27 · 152 阅读 · 0 评论 -
Linux系统编程——进程通信 信号通信
在内核中有一个对象叫信号,进程A与进程B通信在用户空间发送信号是不可能的。只能通过内核发送信号。 信号对象在内核中已经存在了。 内核空间有多少种信号? 通过Linux命令Kill -l 便可以查看有多少种信号。 前面数字代表信号ID,后面字符串为信号的宏,每个宏代表不同的功能。一共有64种信号。 信号的发送: kill()----发送信号 #include <signal.h> #include <sys/types.h> 参数: pid: 正数:要接收信号的进程的进程号 0:原创 2021-12-20 13:30:12 · 119 阅读 · 0 评论 -
Linux系统编程 多线程
什么是线程 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。 线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32原创 2021-09-10 20:54:15 · 245 阅读 · 0 评论