Linux编程入门
学习
狗狗狗乖乖
这个作者很懒,什么都没留下…
展开
-
Linux 本地套接字
原创 2023-10-09 19:44:03 · 33 阅读 · 0 评论 -
广播 组播
广播组播原创 2023-10-09 19:43:25 · 37 阅读 · 0 评论 -
Linux UDP通信
原创 2023-10-09 12:04:37 · 158 阅读 · 0 评论 -
Linux I/O多路复用 select poll epoll
简介select函数poll函数epoll函数原创 2023-10-09 10:42:26 · 62 阅读 · 0 评论 -
Linux TCP状态转换 半关闭 端口复用
原创 2023-10-07 21:18:47 · 29 阅读 · 0 评论 -
Linux TCP 通信并发
客户端服务器端。原创 2023-10-07 20:01:10 · 254 阅读 · 0 评论 -
Linux TCP协议通信 (流程 三次握手 四次挥手 滑动窗口)
【代码】Linux TCP协议通信 (流程 三次握手 四次挥手 滑动窗口)原创 2023-10-07 16:29:31 · 252 阅读 · 0 评论 -
Linux socket 字节序
验证什么字节序。原创 2023-09-27 19:13:48 · 282 阅读 · 0 评论 -
Linux 网络编程基础
原创 2023-09-26 16:23:59 · 40 阅读 · 0 评论 -
Linux生产者和消费者模型 条件变量 信号量
可以把sem理解为车位,wait就占一个车位,pos就空一个车位,车位被占满就阻塞,直至有多余的空出来的。原创 2023-09-26 12:21:00 · 82 阅读 · 0 评论 -
Linux 读写锁
【代码】Linux 读写锁。原创 2023-09-25 20:08:55 · 84 阅读 · 0 评论 -
Linux 线程同步(重要) 互斥量
当多线程对共享的资源同时进行处理时,可能出现三个线程同时使用一个变量,会出现三个线程都输出正在卖第一百张票的情况。原创 2023-09-25 16:28:20 · 113 阅读 · 0 评论 -
Linux 线程属性相关函数
pthread_attr_t就是对应线程的属性。原创 2023-09-22 20:37:09 · 141 阅读 · 0 评论 -
Linux 连接已经终止的线程 线程的分离 线程取消
【代码】Linux 连接已经终止的线程 线程的分离 线程取消。原创 2023-09-22 16:31:39 · 307 阅读 · 0 评论 -
Linux 创建 终止线程(thread)
功能:创建一个子线程,一般情况下main函数所在的线程称为主线程,其余的为子线程。-获取错误的信息: char * strerror(int errnum)-start_routinue:函数指针,这个函数是子线程需要处理的函数。-thread:传出参数,线程创建成功后,子线程的ID被写入这个变量。-attr:设置线程的属性,一般使用默认值,NULL。-失败:返回错误号,和之前的错误号errno不太一样。-arg:给第三个参数使用,传参。原创 2023-09-22 13:44:55 · 100 阅读 · 0 评论 -
Linux 守护进程
【代码】Linux 守护进程。原创 2023-09-19 16:20:57 · 195 阅读 · 0 评论 -
Linux 共享内存
可以对共享内存进行多次删除 shmctl因为shmctl是标记删除而不是直接删除,当共享内存关联的进程数为0时,真正意义上的删除共享内存的key为0的时候,表示被标记删除一个进程与共享内存取消关联,这个进程就不能再继续操作共享内存,也不能再次关联。原创 2023-09-19 11:55:28 · 222 阅读 · 0 评论 -
Linux SIGCHLD信号
【代码】Linux SIGCHLD信号。原创 2023-09-18 23:08:42 · 142 阅读 · 0 评论 -
Linux 信号集 及其 部分函数
SIG_BLOCK:将用户设置的阻塞信号添加到内核中,内核原来的数据被1替换。-oldset:保存设置之前的内核中的阻塞信号集的状态。功能:将自定义信号集中的信号设置到内核中(设置阻塞,解除阻塞,替换)signum:需要不阻塞的那个信号。功能:设置信号集的某个标志位为0,不阻塞这个信号。功能:清空信号集中的数据,将所有的标志位置为0。功能:清空信号集中的数据,将所有的标志位置为1。功能:设置信号集的某个标志位为1,阻塞这个信号。参数:set保存的是内核中的未决信号集的信息。参数:set需要操作的信号集。原创 2023-09-18 22:03:11 · 201 阅读 · 2 评论 -
Linux 信号捕捉函数 signal sigaction
函数指针是实现回调的手段,函数实现之后,将函数名放到函数指针的位置就好了。-需要程序员实现,提前准备好的,函数的类型根据实际需求,看函数指针的定义。成功:返回上一次注册的信号处理函数的地址。-回调函数,程序员只负责写,捕捉到信号后如何区处理。-不是程序员调用,而是当信号产生,内核调用。-SIG_DFL:使用函数默认的行为。handler:对捕捉到的信号怎么处理。失败:返回SIG_ERR,设置错误号。-SIG_IGN:忽略信号。-signum:要捕捉的信号。功能:设置某个信号的捕捉行为。原创 2023-09-18 20:46:35 · 170 阅读 · 1 评论 -
Linux 信号 alarm函数 setitimer函数
后面新设的定时器会取代老的定时器定时与进程的状态无关,无论进程是阻塞,挂起,就绪,运行定时器都是自己玩自己的。原创 2023-09-18 18:29:04 · 260 阅读 · 0 评论 -
Linux 信号相关
这个pid = 某个进程组的ID取反。发送给每一个有权限接受这个信号的进程。将信号发送给当前的进程组。功能:发送SIGABRT给当前的信号,杀死现在的进程。参数pid: >0;将信号发给指定的进程。参数sig可以使用宏值或者和它对应的编号。-功能:给某个进程pid 发送某个信号。参数:sig 要发送的信号。功能:给当前进程发送信号。返回值:成功0 失败非0。原创 2023-09-18 16:58:14 · 209 阅读 · 0 评论 -
内存映射-
二:如果open时O_RDONLY,mmap时prot参数指定PROT_READ | PROT_WRITE会怎么样?可以,但是文件大小如果为0 肯定不行 可以对新的文件进行扩展(lseek truncate)一:如果对mmap的返回值(ptr)做++操作(ptr++),munmap是否能成功?五:可以open的时候O_CREATE创建一个新文件来创建映射区吗?-open的权限小于prot的权限。open()函数中的权限建议和prot参数的权限一样。三:如果文件的偏移量为1000?原创 2023-09-18 11:12:35 · 45 阅读 · 0 评论 -
有名管道实现简易版聊天功能
简单的代码,只能你写一句 我回一句 依次循环。原创 2023-09-16 22:27:38 · 95 阅读 · 0 评论 -
有名管道-
【代码】有名管道-原创 2023-09-16 21:37:42 · 67 阅读 · 0 评论 -
匿名管道-
2.如果有指向管道写端的文件描述符没有关闭(管道的写端引用计数大于0)。4.如果有主席昂管道读端的文件描述符没有关闭(管道的读端引用计数大于0),而持有管道读端进程也没有从管道中读数据,这时候有进程向管道中写数据,那么在管道被写满的时候再次write会堵塞,直到管道中有空位置。1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端读数据,那么当管道内部的数据被读取之后,再次read会返回0,就像读到文件末尾一样。因为父子进程是共享文件描述符的。有可能出现自己写自己读的现象。原创 2023-09-16 17:41:30 · 65 阅读 · 0 评论 -
进程间通信
原创 2023-09-15 20:48:04 · 23 阅读 · 0 评论 -
wait函数() waitpid函数()
因为exit(0)所以退出的状态码0 如果exit(2)那么就是2如果通过kill -9 杀死进程 那么宏WIFSIGNALED就生效 输出那句话。原创 2023-09-15 20:02:02 · 59 阅读 · 0 评论 -
进程退出、孤儿进程、僵尸进程
子进程退出,有些资源需要父进程去释放第一个printf带上了\n会自动做刷新IO缓冲区的操作,第二个没有\n就一直在缓冲区里面调用标准C库的exit函数时,它会再做一次刷IO新缓冲区的操作,输出world但是Linux的_exit函数就不会做这个操作,最后只输出hello。原创 2023-09-15 16:49:00 · 120 阅读 · 0 评论 -
Linux exec函数族
我们通常先创建一个子进程,在子进程里面使用exec,因为调用exec成功后,原进程的资源都被取代,除了一些进程ID等,所以在子进程里面调用exec,对原进程无影响。前六个是标准C库函数,最后一个是Linux系统函数,最常用的是前两个。但是发现execl的内容没和他们一起运行,有孤儿进程。exec并不是生成新的进程还是在原进程执行。原创 2023-09-15 15:55:42 · 426 阅读 · 1 评论 -
Linux创建进程 及父子进程虚拟空间 多进程GDB调试
父子进程的资源是读时共享,写时拷贝,用到某一个资源,比如说改变变量的值的时候才去拷贝这个变量到一个独立的空间。某些状态下,当子进程刚被创建出来还没对资源进行任何写操作时,父子进程的。- 文件描述符 是一样的。父进程中:>0 返回子进程的ID。当前进程的父进程的id:pid。当前进程的id:pid。1.fork()函数的返回值不同。rm inferior id 移除进程。2.pcb中的一些数据。原创 2023-09-12 17:34:30 · 71 阅读 · 0 评论 -
Linux 进程相关命令
kill -9 进程ID 或者kill -9 SIGKILL 进程ID强制杀死。输入 ps aux后里面有个STAT参数。原创 2023-09-12 14:36:30 · 119 阅读 · 0 评论 -
Linux fcntl函数
【代码】Linux fcntl函数。原创 2023-09-11 21:55:45 · 175 阅读 · 0 评论 -
Linux dup dup2函数
【代码】Linux dup dup2函数。原创 2023-09-11 21:19:05 · 173 阅读 · 0 评论 -
目录遍历函数
【代码】目录遍历函数。原创 2023-09-11 20:52:42 · 103 阅读 · 0 评论 -
目录操作函数
删除空目录。原创 2023-09-11 19:57:10 · 99 阅读 · 0 评论 -
Linux文件属性操作函数
修改文件的所在组或者所有者。原创 2023-09-11 19:34:02 · 126 阅读 · 0 评论 -
Linux 部分IO函数
标准C库IO函数的说明文档在 man 3 openLinux系统IO函数说明文档在man 2 open。原创 2023-09-11 15:52:30 · 246 阅读 · 0 评论 -
动态库的制作与使用及 动态库加载失败解决
加载动态库时有时会出现error while loading shared libraries:libcalc.so:可以通过lld命令查看动态库的依赖关系,发现libcalc.so时not found。原创 2023-09-09 12:00:19 · 502 阅读 · 0 评论 -
标准C库IO函数和Linux系统IO函数
linux系统的io函数更加偏底层,更加建议使用C库的函数,效率较高(有缓冲区)磁盘满了或者手动fflush或者关闭文件才会io一次,效率提高,但是linux没有缓冲区主要通过file *fp指针操作文件,文件描述符是定位文件用的,是对文件的数据进行操作,缓冲区提高效率。原创 2023-09-10 20:44:22 · 101 阅读 · 0 评论