LINUX系统编程
文章平均质量分 94
遨游的laugh哥
CS
展开
-
线程的概念+线程函数API
1:进程最大的优点:独占内存空间(虚拟内存实现);也同时带来最大的缺点:切换进程开销大效率低,数据共享困难2:多进程间的通信的本质:通过os来传递数据3:线程的实现目的:并发多线任务;线程不可以脱离进程独立存在4:线程有自己独立的线程号,错误号,task_struct结构体,切换状态和函数栈(局部变量)5:线程库不再由操作系统提供6:c中注册为线程控制函数后就立即启动,c++,,java需要启动函数7:pthread_exit:线程退出;pthread_join:回收线程资源;原创 2022-12-02 14:30:16 · 1022 阅读 · 0 评论 -
信号量的使用
1.信号量用于资源保护,可以实现同步或互斥2.信号量本质,通过加锁,让通信双方得知操作状态3.信号量使用:semget()创建;semctl():SETVAL设初值;semop():pv操作;semctl(,0,IPC_RMID)4.同步,时间顺序,一般涉及多组二元信号量原创 2022-11-25 18:28:14 · 1605 阅读 · 0 评论 -
ipc----共享内存
1.共享内存就是OS在物理内存中开辟一大段缓存空间,直接使用地址来读写缓存2.实现思想:让各自进程空间与开辟出的缓存空间建立映射关系3.使用shmget(ftok生成的key,指定shm的大小,0664|IPC_CREAT);shmat(shmId,NULL,0);则返回映射地址 shmdt(shmaddr); shmctl(shmId,IPC_RMID,NULL);原创 2022-11-23 15:25:41 · 710 阅读 · 0 评论 -
进程间通信(前言)
ipc原创 2022-11-22 23:15:44 · 79 阅读 · 0 评论 -
System V IPC+消息队列
system v ipc,不同于管道是内核以文件形式操作,是内核提供的全新API。一定有个类似文件标识符的ipc标识符。消息队列:双向链表,每个节点:消息编号+内容通信过程:先封装一个msgbuf的消息包,然后接收发送注意api:msgget(),msgsnd(),msgrev()原创 2022-11-21 18:44:17 · 906 阅读 · 2 评论 -
进程间通信:无名管道+有名管道
进程间通信的原因和一位实现机制;具体讲解了管道原创 2022-11-19 14:24:00 · 819 阅读 · 0 评论 -
子进程信号继承;kill+raise+alarm+pause+信号发生接收和处理+信号屏蔽
父子进程可以在自己的代码区定义信号,如果不写,子进程默认继承父进程;如果子进程exec,根据exec原理,子进程继承父进程的默认和忽略;但是exec会重新定义捕获,父进程捕获对子进程不起作用唤醒休眠函数,需要定义捕捉函数,但是唤醒后,不会再次执行休眠函数,除非采取goto语句;但是read是自动唤醒的,无需认为,前提是键盘读入信号发生后,内核会查找信号处理方式表,如果是捕捉或默认,需要查看当前屏蔽字,为1说明信号正在执行,会记录到未处理信号集中,但是同样的信号多次未处理只会记录一次原创 2022-11-15 22:45:19 · 887 阅读 · 0 评论 -
信号:singal
信号的概念;谁会发信号;常用信号;kill pid ;pkill name;signal()原创 2022-11-14 18:48:50 · 669 阅读 · 0 评论 -
exec;僵尸进程和孤儿进程;wait;进程状态;多进程和多线程;守护进程和进程关系
exec;僵尸进程和孤儿进程;wait;进程状态;多进程和多线程;守护进程和进程关系原创 2022-11-10 17:58:32 · 157 阅读 · 0 评论 -
进程控制,父子进程
进程号;进程0,1,2;进程获取相关函数;getpid,getppid,getuid,getgid;fork的父子进程;父子进程的共享文件方式两种原创 2022-11-08 22:02:43 · 662 阅读 · 0 评论 -
进程的环境变量
其实就是进程在运行时,会用到的一些字符串信息,环境表就好比是工具箱,里面放了各种进程运行时需要用到的“工具”,比如各种的路径通过图形界面设置、修改windows“环境变量”时,修改、设置的内容,都会被永久保存到“环境变量文件”中每个进程的环境变量表:每一个进程都在自己的内存空间(堆空间)保存了一份自己的环境变量表。如果某环境变量的数据有很多条,在环境变量表中在windows这边使用;分隔Linux这边则使用:分隔。原创 2022-11-07 18:46:21 · 904 阅读 · 0 评论 -
进程环境+进程终止
进程所需环境:启动程序,内存划分,c库,环境变量;启动代码由编译器提供(源码或.o文件),语言汇编语言。程序的启动(有os情况,裸机);程序的终止,正常终止:return,exit,_exit;异常终止:信号,abort或ctrl+c原创 2022-11-06 22:29:41 · 682 阅读 · 0 评论 -
系统时间和系统文件
口令文件,阴影文件,组文件,时间原创 2022-11-05 18:54:01 · 635 阅读 · 0 评论 -
硬链接,软链接,link,rename,symlink,opendir和readdir
硬链接,软链接,link,rename,symlink,opendir和readdir原创 2022-11-04 21:45:39 · 1313 阅读 · 0 评论 -
lstat,fstat,unmask,chmod,chown,文件截断函数,空洞文件
lstat,fstat,unmask,chmod,chown原创 2022-11-03 21:27:32 · 457 阅读 · 0 评论 -
文件属性之文件权限
文件权限和文件类型原创 2022-10-31 17:58:26 · 488 阅读 · 0 评论 -
dup+dup2+重定位+fcntl
dup+dup2+fcntl原创 2022-10-26 21:59:29 · 218 阅读 · 0 评论 -
文件描述符0,1,2+lseek()+共享文件覆盖解决
正是由于不同的文件描述符,各自对应一个独立的文件表,在文件表中有属于自己的“文件位移量”,开始时都是0。各自从0开始写,每写一个字节向后移动一个字节,他们写的位置是重叠的,因此肯定会相互的覆盖。同样的,指定O_APPEND标志,写操作时,使用文件长度去更新文件位移量,保证各自操作时,都在文件的尾部操作,就不会出现相互覆盖的情况。因为程序开始运行时,就默认打开了代表了显示器/dev/stdout文件,然后1指向这个打开的文件。-------作用:读写文件时,会先检查“文件状态标志”,看看有没有。原创 2022-10-26 17:52:53 · 1670 阅读 · 0 评论 -
Linux系统编程-----文件io2
open+close+read+write原创 2022-10-23 20:07:21 · 385 阅读 · 0 评论 -
Linux 系统编程----文件io1
linux---open,write,read,close原创 2022-10-19 17:52:33 · 345 阅读 · 0 评论