Linux C学习
C++ Super Man
go go go !!!
展开
-
LinuxC之进程---共享内存
共享内存是多个进程之间共享的一段内存段。来进行内存中的数据交换。2.共享内存段对应的struct结构。原创 2022-10-29 20:33:09 · 638 阅读 · 1 评论 -
线程特定数据处理函数学习
在多线程的环境下,进程内的所有线程共享进程的数据空间。因此全局变量为所有线程共享。在程序设计中有时需要保存线程自己的全局变量,这种特殊的变量仅在线程内部有效。如常见的errno,它返回标准的错误码。errno不应该是一个局部变量。几乎每个函数都应该可以访问他,但他又不能作为是一个全局变量。否则在一个线程里输出的很可能是另一个线程的出错信息,这个问题可以通过创建线程的私有数据(TSD thread specific data)来解决。在线程内部,私有数据可以被各个函数访问。但他对其他线程是屏蔽的。线程转载 2020-06-21 18:22:33 · 113 阅读 · 0 评论 -
Linux下线程学习
线程的概念①线程是拥有一个线程ID(类型是pthread_t),一个程序计数器(前面有一篇博文介绍过),一组寄存器,一个堆栈内存。②线程属于进程的一部分,进程是系统分配资源的单位,而线程是系统的执行调度的单位,我们可以把线程理解为一个程序执行的单位,以前的进程也是线程,原因是程序就只有一个主函数(也叫主线程),现在有多线程,指的是多个执行体,线程与的exec函数开创子进程类似,不过线程是共享进程的资源,而exec开创的函数只会共享部分资源,比如进程打开的文件描述符。线程创建的步骤①动态创建函数pt原创 2020-06-21 15:25:04 · 96 阅读 · 0 评论 -
什么是程序计数器,CPU中有几个程序计数器,线程为什么有私有的程序计数器
1、什么是程序计数器CPU再执行程序时,需要有一个地方存放下一条要被取走指令的位置,是一个寄存器。2.CPU中有几个程序计数器只有一个3.线程为什么是私有的程序计数器线程中的程序计数器可以理解为一段内存,用来保存当前线程执行到的位置,因为系统采用时间片轮转的方法,所以一个线程不可能一直占用CPU,只能执行规定时间,进行线程切换,这里就需要有一个私有的线程计数器,也就是本地计数器,来保存当前线程的执行到的位置,等到下一次再从这个位置继续执行。...原创 2020-06-20 17:50:01 · 2829 阅读 · 1 评论 -
什么是进程组ID
每个进程组都有一个组长进程,组长进程的进程号等于进程组ID。组长进程可以创建一个进程组、创建该组中的进程。只要某个进程组中有一个进程存在,则该进程组就存在,与组长进程是否终止无关。从进程组创建开始到其中最后一个进程离开为止的时间区间成为进程组的生存期。进程组中最后一个进程可以终止或者转移到另一个进程组中。进程调用setpgid(setsid也可以)可以参加一个现存的组或者创建一个新进程组。可以是前台进程组或后台进程组。#include <sys/types.h>#include <u转载 2020-06-19 07:37:52 · 709 阅读 · 0 评论 -
Linux C之网络编程(网络字节序)
①BSD(BerkeleySoftwareDistribution,伯克利软件套件):BSD是Unix的衍生系统,拥有许多Unix授权的变形②字节顺序:计算机的字节顺序指的是数据在计算机存储的先后顺序,分为大端序和小端序。大端序:存储一个数的时候,数据的高字节存储在低地址,低字节存储在高地址就是大端序小端序:存储一个数的时候,数据的低字节存储在低地址,高字节存储在高地址就是小端序一般Intel用的是小端序,RISC芯片用的是大端序这里介绍一个函数:uname系统调用函数功能描述:..原创 2020-05-13 17:35:10 · 246 阅读 · 0 评论 -
Linux C之网络编程(字节处理函数)
套接字地址是多字节的数据,Linx专门有字节处理函数来处理多字节数据①以b开头#include<strings.h>void bzero(void *s,int n);//将地址s所指向的内存,后n个字节清零void bcopy(const void *src,const void *dest,int n);//将src所指向的地址的后n个字节复制到dest中int bcmp(const void *s1,const void *s2,int n);//对比地址s1指向的内存和s原创 2020-05-13 18:04:33 · 167 阅读 · 0 评论