![](https://img-blog.csdnimg.cn/1acd005bde7c475cb36d703e29270a11.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux应用编程
文章平均质量分 77
linux应用编程
跟 屁 虫
这个作者很懒,什么都没留下…
展开
-
网络编程函数及结构体总结
常用的几个函数如下,不赘述:socket、listen、bind、accept、connect、send、recv、read、writesetsocketopt、getsocketopt函数汇总#include <sys/types.h>#include <sys/socket.h>int socketpair(int d, int type, int protocol, int sv[2]);创建一对无名的、相互连接的套接子。创建好的套接字分别是sv[0]和sv[1];原创 2021-06-07 13:34:00 · 305 阅读 · 0 评论 -
网络编程之linger结构体
TCP连接断开的时候调用closesocket函数,有优雅的断开和强制断开两种方式.那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger 结构体属性。linger 结构体 数据结构如下:struct linger{int l_onoff;int l_linger;};有三种组合方式:第一种l_onoff = 0;l_linger忽略这种方式下,就是在closesocket的时候立刻返回,底层会将未发送完的数据发送完成后再释放资源,也就是优雅的退出。第二种l转载 2021-06-01 16:13:31 · 734 阅读 · 0 评论 -
网络编程之addrinfo草稿
addrinfo 结构体定义如下:typedef struct addrinfo {int ai_flags;//指示在getaddrinfo函数中使用的选项的标志。int ai_family;int ai_socktype;int ai_protocol;size_t ai_addrlen;char *ai_c转载 2021-06-01 14:44:00 · 250 阅读 · 0 评论 -
socketpair
socketpair()函数的声明:#include <sys/types.h>#include <sys/socket.h>int socketpair(int d, int type, int protocol, int sv[2]);socketpair()函数用于创建一对无名的、相互连接的套接子。如果函数成功,则返回0,创建好的套接字分别是sv[0]和sv[1];否则返回-1,错误码保存于errno中。基本用法:这对套接字可以用于全双工通信,每一个套接字既可以转载 2021-06-01 14:10:05 · 222 阅读 · 0 评论 -
mkdir()函数
一、创建目录1.1 direct.h 头文件int mkdir(const char *path,mode_t mode);函数名: mkdir 功 能: 建立一个目录 用 法: int mkdir( const char *dirname ); 头文件库:direct.h 返回值:创建一个目录,若成功则返回0,否则返回-11.2 Linux下mkdir函数头文件库:#include <sys/stat.h>#include <sys/types.h&转载 2021-04-21 12:45:48 · 20646 阅读 · 0 评论 -
c++杂碎2——struct stat和Linux中的stat命令
Linux中的stat命令:执行:stat 文件名,获得文件的inode信息。struct stat:_stat函数用来获取指定路径的文件或者文件夹的信息。//! 需要包含de头文件 #include <sys/types.h> #include <sys/stat.h> int stat( const char *filename //文件或者文件夹的路径 , struct stat *buf //获取的信息保存在内存中); //转载 2021-04-20 16:15:57 · 396 阅读 · 0 评论 -
linu应用边角料6——linux进程wait与waitpid函数
1、wait的工作原理(1)子进程结束时,系统向其父进程发送SIGCHILD信号(2)父进程调用wait函数后阻塞(3)父进程被SIGCHILD信号唤醒然后去回收僵尸子进程(4)父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程。(5)若父进程没有任何子进程则wait返回错误2、程序#include <stdio.h>#include <unistd.h>#include <sys/type原创 2021-02-24 15:44:45 · 289 阅读 · 0 评论 -
linu应用边角料4——linux环境变量在函数中
(1)export命令查看环境变量(2)进程环境表介绍.每一个进程中都有一份所有环境变量构成的一个表格,也就是说我们当前进程中可以直接使用这些环境变量。进程环境表其实是一个字符串数组,用environ变量指向它。声明就能用,不用定义。#include <stdio.h>int main(void){ extern char **environ; // 声明就能用 int i = 0; for(i=0;NULL != environ[i];i++) printf("%s\n",原创 2021-02-24 15:27:11 · 133 阅读 · 0 评论 -
linu应用边角料5——exec族函数
1、为什么需要exec函数(1)fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行)(2)可以直接在子进程的if中写入新程序的代码。这样可以,但是不够灵活,因为我们只能把子进程程序的源代码贴过来执行(必须知道源代码,而且源代码太长了也不好控制),譬如说我们希望子进程来执行ls -la 命令就不行了(没有源代码,只有编译好的可执行程序)(3)使用exec族运行新的可执行程序(exec族函数可以原创 2021-02-24 15:34:05 · 97 阅读 · 0 评论 -
linu应用边角料3——dup和dup2\文件描述符的复制
1.多次打开同一文件与O_APPEND1、重复打开同一文件读取(1)一个进程中两次打开同一个文件,然后分别读取,看结果会怎么样(2)结果无非2种情况:一种是fd1和fd2分别读,第二种是接续读。经过实验验证,是分别读。(3)分别读说明:我们使用open两次打开同一个文件时,fd1和fd2所对应的文件指针是不同的2个独立的指针。文件指针是包含在动态文件的文件管理表中的,所以可以看出linux系统的进程中不同fd对应的是不同的独立的文件管理表。2、重复打开同一文件写入(1)一个进程中2个打开同一个文原创 2021-02-24 12:31:42 · 436 阅读 · 0 评论 -
linu应用边角料2——inode静态文件,vnode动态文件间的关系
1、硬盘中的静态文件和inode(i节点)(1)文件平时都在存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫静态文件。(2)一块硬盘中可以分为两大区域:一个是硬盘内容管理表项,另一个是真正存储内容的区域。操作系统访问硬盘时是先去读取硬盘内容管理表,从中找到我们要访问的那个文件的扇区级别的信息,然后再用这个信息去查询真正存储内容的区域,最后得到我们要的文件。(3)操作系统最初拿到的信息是文件名,最终得到的是文件内容。第一步就是去查询硬盘内容管理表,这个管理表中以文件为单位记录了各个文件的各原创 2021-02-24 11:00:52 · 463 阅读 · 0 评论 -
linu应用边角料1——return、exit、_exit的区别
1.atexit注册进程终止处理函数,在进程结束时,atexit注册的函数会被执行。2.return、exit和_exit的区别:return和exit效果一样,都是会执行进程终止处理函数,但是用_exit终止进程时并不执行atexit注册的进程终止处理函数。#include <stdio.h>#include <stdlib.h>#include <unistd.h>void func1(void){ printf("func1\n");}void f原创 2021-02-24 10:52:57 · 115 阅读 · 0 评论 -
linux网络基础
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考...原创 2021-02-23 17:05:53 · 360 阅读 · 0 评论 -
linux线程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考...原创 2021-02-23 17:05:20 · 303 阅读 · 0 评论 -
linux高级IO,阻塞与非阻塞
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考...原创 2021-02-23 17:04:40 · 356 阅读 · 0 评论 -
linux中的信号
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考...原创 2021-02-23 17:03:55 · 131 阅读 · 0 评论 -
linux进程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考4.linux进程全解1.程序的开始和结束1.1、main函数由谁调用(1)编译链接时的引导代码。操作系统下的应用程序其实在main执行前也需要先执行一段引导代码才能去执行main,我们写应用程序时不用原创 2021-02-23 17:02:49 · 233 阅读 · 0 评论 -
linux应用编程基础之获取系统信息
获取系统信息文章目录1.关于时间的概念2.linux系统中的时间3.时间相关API4.linux中使用随机数5.proc文件系统介绍1.关于时间的概念1.1、GMT时间(1)GMT是格林尼治时间,也就是格林尼治地区的当地之间。(2)GMT时间的意义?用格林尼治的当地时间作为全球国际时间,用以描述全球性的事件的时间,方便大家记忆。(3)一般为了方便,一个国家都统一使用一个当地时间。1.2、UTC时间(1)GMT时间是以前使用的,近些年来越来越多的使用UTC时间。(2)关于北京时间,可以参原创 2021-02-14 22:38:50 · 283 阅读 · 0 评论 -
linux应用编程之文件属性
文件属性文章目录前言1.linux中各种文件类型2.常用文件属性获取4.文件权限管理5.读取目录文件前言本文是对朱有鹏相关课程的归纳总结1.linux中各种文件类型1.1、普通文件(- regular file)(1)我们如何知道一个文件是文本文件还是二进制文件?在linux系统层面是不区分这两个的(譬如之前学过的open、read、write等方法操作文件文件和二进制文件时一点区别都没有),所以我们无法从文件本身准确知道文件属于哪种,我们只能本来就知道这个文件的类型然后用这种类型的用法去原创 2021-02-14 22:13:47 · 493 阅读 · 0 评论 -
linux文件IO
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言文件IO1.应用编程框架介绍5.文件读写的一些细节7.lseek函数介绍二、使用步骤1.引入库2.读入数据总结前言本文是对朱有鹏相关课程的归纳总结,文章篇幅较长,建议多看几天,文中的代码比解释更直白,运行代码来感受文件IO或许是更好的方法文件IO1.应用编程框架介绍1.1、什么是应用编程(1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机、C高级、uboot和系统移植、linux应用编程和网络编原创 2021-02-14 21:11:46 · 385 阅读 · 0 评论