![](https://img-blog.csdnimg.cn/69362556efba48ca92c6f23bb4eecc57.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux笔记
文章平均质量分 85
记录与linux相关的基础知识、某些问题解决方案,欢迎广大网友来进行讨论学习。
futureCode.
用代码解析世界。
展开
-
linux_UDP通信_sendto函数_recvfrom函数
sendto函数 recvfrom函数 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议。省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证。//NULL:不关心对端信息。与TCP类似的,UDP也有可能出现缓冲区被填满后,再接收数据时丢包的现象。dest_addr:指向 struct sockaddr 结构的指针(包含远程主机的 IP 地址和端口数据,是传入参数)。由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,保证通讯可原创 2023-05-08 21:29:15 · 2085 阅读 · 0 评论 -
linux_socket网络套接字函数(TCP通信)-socket函数-bind函数-listen函数-accept函数-connect函数-send函数-recv函数
socket函数 bind函数 listen函数 accept函数 connect函数 send函数 recv函数 首先将整个结构体清零,然后设置地址类型为AF_INET,网络地址为INADDR_ANY,这个宏表示本地的任意IP地址,因为服务器可能有多个网卡,每个网卡也可能绑定多个IP地址,这样设置可以在所有的IP地址上监听,直到与某个客户端建立了连接时才确定下来到底用哪个IP地址,端口号为6666。客户端需要调用connect()连接服务器,connect和bind的参数形式一致,区别在于bind的参数是原创 2023-05-07 21:35:42 · 1510 阅读 · 0 评论 -
linux_网络通信-套接字通信socket-网络字节序-IP地址转换函数-inet_pton函数-htonl函数-htons函数-ntohl函数-ntohs函数
套接字概念 例如UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。例如UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。在网络通信中,套接字一定是成对出现的原创 2023-05-06 19:25:00 · 2357 阅读 · 0 评论 -
linux_进程锁与文件锁-pthread_mutexattr_init函数-pthread_mutexattr_setpshared函数
进程间也可以使用互斥锁 pthread_mutexattr_init函数 初始化一个mutex属性对象 pthread_mutexattr_setpshared函数 修改mutex属性 pthread_mutexattr_destroy函数 销毁mutex属性对象 (而非销毁锁) 但应在pthread_mutex_init初始化之前,修改其属性为进程间共享。线程锁取值:PTHREAD_PROCESS_PRIVATE (mutex的默认属性即为线程锁,进程间私有)锁的类型:F_RDLCK 、F_WRLCK 、原创 2023-05-05 18:43:46 · 1409 阅读 · 0 评论 -
linux_信号量函数系列-信号量实现生产者消费者模型-sem_init函数-sem_wait函数-sem_post函数-sem_trywait函数
sem_init函数-sem_wait函数-sem_post函数-sem_trywait函数 定义两个信号量:S满 = 0, S空 = 1 (S满代表满格的信号量,S空表示空格的信号量,程序起始,格子一定为空)。sem_post: 将信号量++,同时唤醒阻塞在信号量上的线程 (类比pthread_mutex_unlock);但,由于sem_t的实现对用户隐藏,所以所谓的++、–操作只能通过函数来实现,而不能直接++、–符号。sem_wait: 1. 信号量大于0,则信号量-- (类比pthread_mut原创 2023-05-04 17:44:34 · 3378 阅读 · 0 评论 -
linux_条件变量_pthread_cond_wait函数_pthread_cond_timedwait函数_pthread_cond_signal函数_生产者消费者模型
pthread_cond_t类型 用于定义条件变量 pthread_cond_init函数 pthread_cond_wait函数 该系列函数所有的返回值,返回非0的时候 生产者消费者条件变量模型 都可以通过strerror函数来打印错误信息 如直接使用mutex,除了生产者、消费者之间要竞争互斥量以外,消费者之间也需要竞争互斥量,但如果汇聚(链表)中没有数据,消费者之间竞争互斥锁是无意义的。 当被唤醒,pthread_cond_wait函数返回时,解除阻塞并重新申请获取互斥锁pthread_mutex_l原创 2023-05-03 11:27:15 · 634 阅读 · 0 评论 -
linux_线程读写锁_pthread_rwlock_rdlock函数_pthread_rwlock_wrlock函数_pthread_rwlock_tryrdlock函数_pthread_rwloc
pthread_rwlock_tryrdlock函数 pthread_rwlock_trywrlock函数 读写锁是“读模式加锁”时, 既有试图以写模式加锁的线程,也有试图以读模式加锁的线程。那么读写锁会阻塞随后的读模式锁请求。今天来向大家分享linux的另一种锁:读写锁,与互斥量锁类似,但读写锁允许更高的并行性。读写锁也叫共享-独占锁。 读写锁是“读模式加锁”时, 如果线程以读模式对其加锁会成功;3个线程不定时 “写” 全局资源,5个线程不定时 “读” 同一全局资源。 读写锁是“写模式加锁”时, 解锁前,原创 2023-05-02 09:04:50 · 913 阅读 · 0 评论 -
linux_线程锁mutex(互斥量)_线程同步_死锁现象_pthread_mutex_lock函数_pthread_mutex_unlock函数_死锁现象
线程锁,pthread_mutex_lock函数 pthread_mutex_unlock函数 当T1再次获得cpu继续 从失去cpu的位置向后写入1,当执行结束,内存中的100字节,既不是全1,也不是全0。4、main 中加n= 10 将n在while中-- 这时,主线程输出10次后退出,调用pthread_cancel()将子线程退出,销毁锁。以上3点中,前两点不能改变,欲提高效率,传递数据,资源必须共享。unlock主动解锁函数,同时将阻塞在该锁上的所有线程全部唤醒,至于哪个线程先被唤醒,取决于优先原创 2023-05-01 16:57:40 · 1444 阅读 · 0 评论 -
linux_设置线程属性-pthread_attr_t结构体-设置线程分离态-修改线程栈的大小-NPTL
pthread_attr_t结构体 pthread_attr_init函数 pthread_attr_destroy函数 pthread_attr_setdetachstate函数 pthread_attr_getdetachstate函数 pthread_cond_timedwait函数 pthread_attr_setstack函数 pthread_attr_getstack函数 pthread_attr_setstacksize函数 pthread_attr_getstacksize函数 默认的属性为原创 2023-04-30 19:02:49 · 1106 阅读 · 0 评论 -
linux_线程分离pthread_detach函数-线程取消pthread_cancel函数-线程相等pthread_equal函数
pthread_detach函数 ②不能对一个已经处于detach状态的线程调用pthread_join,这样的调用将返回EINVAL错误。也就是说,如果已经对一个线程调用了pthread_detach就不能再调用pthread_join了。但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。也就是说,如果已经对一个线程调用了pthread_detach就不能再调用pthread_join了。一般情况下,线程终止后,其终止状态一直保留到其它线程调用pthre原创 2023-04-30 10:17:58 · 1390 阅读 · 0 评论 -
linux_线程基础函数-pthread_self函数-pthread_create函数-pthread_exit函数-pthread_join函数
在一个线程中调用pthread_create()创建新的线程后,当前线程从pthread_create()返回继续往下执行,而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。线程id的类型是thread_t,它只在当前进程中保证是唯一的,在不同的系统中thread_t这个类型有不同的实现,它可能是一个整数值,也可能是一个结构体,也可能是一个地址,所以不能简单地当成整数用printf打印,调用pthread_self(3)可以获得当前线程的id。原创 2023-04-29 18:32:31 · 2831 阅读 · 0 评论 -
linux_线程概念-内核线程实现原理-线程共享资源-线程优缺点
什么是线程,LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下)进程:独立地址空间,拥有PCB线程:也有PCB,但没有独立的地址空间(共享)区别:在于是否共享地址空间。Linux下: 线程:最小的执行单位进程:最小分配资源单位,可看成是只有一个线程的进程。 线程共享资源 1、文件描述符表 2、每种信号的处理方式 3、当前工作目录 线程非共享资源 1、线程id 2、处理器现场和栈指针(内核栈) 3、独立的栈空间(用户空间栈)原创 2023-04-28 20:42:21 · 768 阅读 · 0 评论 -
linux_进程学习-ttyname函数-getpgrp-getpgid-setpgid函数-getsid-setsid函数-守护进程-linux会话
ttyname函数-getpgrp-getpgid-setpgid函数-getsid-setsid函数-守护进程-linux会话 参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息。Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。printf(“----子进程组ID被改变后的组 ID == %d\n”,getpgid(0));pr原创 2023-04-24 00:20:58 · 877 阅读 · 0 评论 -
linux_信号_sigqueue函数发送信号传参_sigaction函数捕捉信号传参_中断系统调用
当注册信号捕捉函数,希望获取更多信号相关信息,不应使用sa_handler而应该使用sa_sigaction。siginfo_t是一个成员十分丰富的结构体类型,可以携带各种与信号相关的数据。如:捕捉到信号后,在执行捕捉函数期间,不希望自动阻塞该信号,可将sa_flags设置为SA_NODEFER,除非sa_mask中包含该信号。可修改sa_flags参数来设置被信号中断后系统调用是否重启。慢速系统调用被中断的相关行为,实际上就是pause的行为: 如,read。oldact:传出参数,旧的处理方式。原创 2023-04-22 22:41:03 · 748 阅读 · 0 评论 -
linux_SIGCHLD信号-子进程回收
-1 回收指定进程组内的任意子进程 可以和kill命令一起使用,例如:kill -9 -进程组ID。printf(“子进程 %d 退出 %d\n”, pid, WEXITSTATUS(status));printf(“子进程 %d 取消 信号 %d\n”, pid, WTERMSIG(status));0 回收指定ID的子进程,回收指定子进程时,只要该子进程结束,就可回收,回收时间>=子进程结束时间。1.子进程继承了父进程的信号屏蔽字和信号处理动作,但子进程没有继承未决信号集spending。原创 2023-04-22 21:28:01 · 687 阅读 · 0 评论 -
linux_时序竞态-pause函数-sigsuspend函数-异步I/O-可重入函数-不可重入函数
时序竞态:由于进程之间执行的顺序,pause函数 sigsuspend函数 原子操作:cpu在执行这个函数就会把他执行完,不会停止。为什么会有时序竞态的问题产生,是因为cpu在执行进程的时候,一个进程只执行一个时间片段,在调用alarm函数后,CPU去执行别的进程了,当执行别的进程的时间大于定时的时间后,会发生什么问题,全局变量异步I/O,可重入函数,不能使用malloc、free等,不可重入函数,函数内不能含有全局变量及static变量,EINTR:被一个信号中断。原创 2023-04-22 00:09:43 · 919 阅读 · 0 评论 -
linux_信号捕捉-signal函数-sigaction函数-sigaction结构体
1、进程正常运行时,默认PCB中有一个信号屏蔽字,假定为set,它决定了进程自动屏蔽哪些信号。当注册了某个信号捕捉函数,捕捉到该信号以后,要调用该函数。sa_mask: 调用信号处理函数时,所要屏蔽的信号集合(信号屏蔽字)。sa_sigaction:当sa_flags被指定为SA_SIGINFO标志时,使用该信号处理程序。//默认属性 信号捕捉函数执行期间,自动屏蔽本信号。//屏蔽ctrl+c信号。//捕捉ctrl+c信号,在当前进程收到ctrl+c信号时执行do_sig函数。原创 2023-04-21 00:29:00 · 391 阅读 · 0 评论 -
linux_信号_sigemptyset函数-sigfillset函数-sigaddset函数-sigdelset函数-sigismember函数-sigprocmask函数-sigpending函数
C语言代码打印未决信号集,信号屏蔽字,sigset_t类型定义: typedef unsigned long sigset_t; sigset_t类型的本质是位图。 sigprocmask函数详解 1.内核对信号的处理当信号产生后,未决信号集中描述该信号的位立刻翻转为1,内核通过读取未决信号集来判断信号是否应被处理。但信号屏蔽字集合mask可以影响未决信号集。而我们可以在应用程序中自定义set来改变mask。已达到屏蔽指定信号的目的。2.信号集设定。 sigfillset函数-sigaddset函数原创 2023-04-20 22:45:45 · 960 阅读 · 0 评论 -
linux_设置定时器(C语言)-alarm函数-time命令-settimer函数
返回0或剩余的秒数,此时剩余的秒数是:距离第一次调用alarm函数后第二次调用alarm函数,上一次设定的seconds定时没有执行完的时间。假设你上一次定时5s,但是你的程序执行2s后又再次调用该函数,则本次调用的返回值就是上一次定时剩余的时间3s。③ 运行时计时(用户+内核):ITIMER_PROF → 27)SIGPROF 计算占用cpu及执行系统调用的时间。程序运行的瓶颈在于IO,优化程序,首选优化IO(标准输入输出屏幕)。常用:取消定时器alarm(0),返回旧闹钟余下秒数。原创 2023-04-20 00:38:14 · 1706 阅读 · 0 评论 -
linux_信号-终端按键信号-硬件异常信号-kill函数-raise函数-abort函数
权限保护:super用户(root)可以发送信号给任意用户,普通用户是不能向系统用户发送信号的。kill -SIGKILL 【PID-进程ID号】 #向当前进程发送了9号信号(SIGKILL),杀死当前进程。printf(“我是子进程 %d, ppid = %d\n”, getpid(), getppid());除0操作 → 8) SIGFPE (浮点数例外) “F” -----float 浮点数。失败:-1 (ID非法,信号非法,普通用户杀init进程等权级问题),设置errno。原创 2023-04-19 23:18:57 · 727 阅读 · 0 评论 -
linux_信号概念、事件、状态、常见信号解释、信号屏蔽字、未决信号集
在Linux内核的进程控制块PCB是一个结构体,task_struct, 除了包含进程id,状态,工作目录,用户id,组id,文件描述符表等,还包含了信号相关的信息,主要指阻塞信号集和未决信号集。当进程A给进程B发送信号时,进程B收到信号之前是执行自己的代码,收到进程A的信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行自己的代码。其实就是你执行ctrl+c后,相当于产生了一个信号,你所在的终端进程就将这个信号发给你运行的进程,而这个信号就是能杀死你进程的信号。原创 2023-04-19 22:16:09 · 885 阅读 · 0 评论 -
linux_使用共享存储映射区进行无血缘进程通信-mmap函数-munmap函数
本篇文章是对共享存储映射区的补充,也是一个例子代码,大家可以借鉴学习。以上就是本次的分享了,希望能对大家有所帮助。此博主在CSDN发布的文章目录:【1.进程a-先执行-写数据。2.进程b-后执行-读数据。原创 2023-04-18 23:59:08 · 254 阅读 · 0 评论 -
linux_共享存储映射区-mmap函数-munmap函数-进程通信-strace命令
共享存储映射I/O就是使一个磁盘文件与存储空间中的一个缓冲区相映射,当从缓冲区中取数据,就相当于读文件中的相应字节;mmap函数 函数作用:创建的映射区首地址。头文件:#include 函数原型:void *mmap(void *adr 函数参数:addr: 建立映射区的首地址,由Linux内核指定。使用时,直接传递NULL length: 欲创建映射区的大小 prot 映射区权限PROT_READ、PROT_WRITE、PROT_READ|PROT_WRITE flags:标志位原创 2023-04-18 23:38:06 · 873 阅读 · 0 评论 -
linux_FIFO命名管道-mkfifo函数-进程通信
FIFO常被称为命名管道,以区分管道(pipe)。管道(pipe)只能用于“有血缘关系”的进程间。但通过FIFO,不相关的进程也能交换数据,也就是无血缘间的进程进行通信。一旦使用mkfifo创建了一个FIFO,就可以使用open打开它,常见的文件I/O函数都可用于fifo。如:close、read、write、unlink等。//注意创建管道文件需要一方掌握读端,一方掌握写端,才能正常读写。1.FIFO-mkfifo函数。pathname:文件名。原创 2023-04-17 22:08:04 · 961 阅读 · 0 评论 -
linux_管道学习-pipe函数-管道的读写-fpathconf函数
管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。int pipe(int pipefd[2]); 创建一个管道。① 读管道: 1. 管道中有数据,read返回实际读到的字节数。2. 管道中无数据:管道写端被全部关闭,read返回0 (好像读到文件结尾) 写端没有全部被关闭,read阻塞等待(不久的将来可能有数据递达,此时会让出cpu) 写管道: 管道读端全部被关闭, 进程异常终止(也可使用捕捉SIGPIPE信号,使进程不终止) 管道读端没有全部原创 2023-04-17 20:50:34 · 1185 阅读 · 0 评论 -
linux_何为IPC-进程间常用的通信方式
任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制就称为。Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。这些方法是如何通信的,在接下来的分享中会逐一介绍到,各位网友敬请期待吧。随着计算机的蓬勃发展,一些方法由于自身设计缺陷被淘汰或者弃用。在进程间完成数据传递需要借助操作系统提供特殊的方法,原创 2023-04-15 15:16:40 · 355 阅读 · 0 评论 -
linux_回收子进程(何为孤儿进程、僵尸进程、wait函数、waitpid函数)
孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,此时子进程的父进程就成为init进程,该子进程就相当于被init进程领养。僵尸进程: 进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。wait函数作用:① 阻塞等待子进程退出 借助宏函数来进一步判断进程终止的具体原因 waitpid函数作用 指定pid进程清理,可以不阻塞。参数pid: > 0 回收指定ID的子进程,回收指定子进程时,只要该子进程结束,就可回收,回收时间>=子进程结束时间。原创 2023-04-14 23:33:42 · 744 阅读 · 0 评论 -
linux_exec函数族-execl函数-execlp函数-execle函数-execv函数-execvp函数-execve函数
execl函数 execlp函数 execle函数 execv函数 execvp函数 execve函数 exec函数一旦调用成功即执行新的程序,不返回。只有失败才返回,错误值-1。所以通常我们直接在exec函数调用后直接调用perror()和exit(),无需if判断。 l (list) 命令行参数列表 p (path) 搜索file时使用path变量 v (vector) 使用命令行参数数组 e (environment) 使用环境变量数组,不使用进程原有的环境变量,设置新加载程序运行的环境变量 函数作用原创 2023-04-11 22:30:14 · 855 阅读 · 0 评论 -
linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试
fork函数 创建一个子进程 getpid函数 获取当前进程ID getppid函数 获取当前进程的父进程ID getuid函数 获取当前进程实际用户 geteuid函数 获取当前进程有效用户ID getgid函数 获取当前进程使用用户组ID getegid函数 获取当前进程有效用户组ID 进程之间共享数据-进程gdb调试 父子进程共享:1. 文件描述符(打开文件的结构体) 2. mmap建立的映射区 (后续再分享) gdb调试的时候 注意,区分一个函数是“系统函数”还是“库函数”依据: ①是否访问内核数原创 2023-04-10 22:53:29 · 800 阅读 · 0 评论 -
linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数
linux环境变量 environ PATH SHELL 通常是/bin/bash。 getenv函数 函数作用:获取环境变量值 头文件:#include setenv函数 函数参数: name:环境变量的键 value:环境变量的值overwrite: unsetenv函数 函数作用: 删除环境变量name的定义 函数参数: name:环境变量的键 返回值: 成功:0;失败:-1 val = getenv(name);//获取name环境变量值 printf("1 %s = %s原创 2023-04-10 21:48:31 · 645 阅读 · 0 评论 -
linux_进程基础概念(程序、进程、并发、单道程序设计、多道程序设计、CPU和MMU、进程控制块PCB、进程状态)
程序 是指编译好 进程 活跃的程序 并发:一个时间段中有多个进程 单道程序设计:程一个一个排 多道程序设计:多个进程轮流使用CPU (分时复用CPU资源) CPU和MMU:是内存管理单元,有时 进程控制块PCB:维护进程相关的信息 进程状态:状态有5种。分别是初始态,就绪态,运行态,挂起态与终止态。cpu一般为纳秒级,1s约可以执行10亿条指令。1s = 1000ms, 1ms = 1000us, 1us = 1000ns即1s=1000000000ns也就是说,多道程序设计在人眼中是并行,但是对于原创 2023-04-08 23:24:41 · 269 阅读 · 0 评论 -
linux通过C语言代码打印系统环境变量-environ[方法超级简单]
以上就是本次分享了,欢迎各位网友关注博主一起交流讨论。此博主在CSDN发布的文章目录:【原创 2023-04-01 23:14:39 · 324 阅读 · 0 评论 -
linux学习教程,常用命令大全,入门手册(详细且全面),linux课程超5万字总结[记得收藏]
安装linux虚拟机 linux版本介绍Redhat(RHEL)系列Debian系列ubuntu命名规则 如何挂载U盘到虚拟机? mount命令 umount命令 U盘挂载到非/mnt目录会如何? 硬盘命名规则文件类命令 linux文件根目录 cd命令 ls 命令 文件详细信息-[ls -al] linux文件颜色说明 文件创建-mkdir命令、touch命令 删除文件-rm命令、rmdir命令linux文件复制-cp命令cat命令 more命令 less命令 head命令 tail命令 linux文件移动原创 2023-03-24 21:06:09 · 1325 阅读 · 1 评论 -
linux_makefile文件编写,基本规则、工作原理、模式规则,wildcard函数、patsubst函数
makefile文件命名规则,基本规则,make根据文件修改的时间来进行对比的,源文件生成的时间原创 2023-03-21 23:03:30 · 877 阅读 · 0 评论 -
linux_GDB调试学习(调试运行、多文件设置断点)_C/C++程序调试
linux下C/C++程序调试,GDB安装:sudo apt-get install gdb 使用编译器(gcc/g++)的 -g 参数可以做到这一点。如:gcc -g hello.c -o hello 启动GDB命令:gdb program 运行程序参数set args #可指定运行时参数。(如:set args 10 20 30 40 50 )show args #命令可以查看设置好的运行参数。run #运行程序,跑到断点出停止,简写(r) start #运行程序,开始只执行一步break #设置断点原创 2023-03-18 23:02:27 · 2996 阅读 · 0 评论 -
linux静态库、linux动态库制作、使用,动态库报错:error while loading shared libraries: libxxx.so: cannot open shared o
linux的静态库是以.a结尾的,而windows的静态库是以.lib结尾的,本次来介绍的是linux的静态库。静态库命名方式:libsort.a #lib开头,sort静态库名,.a结尾 gcc/g++命令生成 *.o文件ar打包,得到静态库 libmytest.a,使用静态库,linux的动态库是以.so结尾的,而windows的静态库是以.dll结尾的,现在来介绍的是linux的动态库(也有的人叫共享库)。使用动态库,执行可执行文件,动态库报错,更新:sudo ldconfig -v原创 2023-03-17 22:38:12 · 2567 阅读 · 0 评论 -
linux_C/C++程序编译-gcc编译器基础使用、编译阶段、编译优化、命令大全(g++适用)
gcc/g++编译器安装 sudo apt install gcc 编译的四个阶段分为:1.预处理-E(使用参数)2.编译-S(使用参数)3.汇编-c(使用参数)4.链接 gcc一些参数说明:-o: 指定生成的文件的名字 -D: 在编译的时候定义宏(控制log的输出) -I: 指定头文件的路径(大写的i) gcc/g++编译、生成可执行文件命令 编译时定义宏命令 gcc/g++提示更多警告信息命令 -g #gdb调试的时候必须加此参数 -On #编译优化等级n=0∼3,对代码进行优化,比如代码有冗余:原创 2023-03-17 20:31:42 · 612 阅读 · 0 评论 -
linux_vim文本编辑器(vi),命令模式、文本模式、可视模式、末行模式[常用命令大全]
vi和vim的描述,vim的安装,vim命令模式、文本模式、可视模式、末行模式 x: 删除光标后一个字符,相当于 Del X: 删除光标前一个字符,相当于 Backspace dw: 删除光标开始位置的字,包含光标所在字符 光标必须移动到删除单词的首字符上d0: 删除光标前本行所有内容,不包含光标所在字符】D(d$): 删除光标后本行所有内容,包含光标所在字符 dd: 删除光标所在行n dd 删除指定的行数 : #命令模式切换到末行模式 按两次esc #末行模式切换到命令模式原创 2023-03-15 20:24:44 · 1318 阅读 · 0 评论 -
linux命令行关机、重启(poweroff命令、reboot命令、shutdown命令)
linux终端命令行关机、重启,poweroff命令,sudo poweroff #在一定时间后关机,reboot命令,sudo reboo #在一定时间后重启,shutdown命令,-t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒). -k : 仅送出警告讯息文字, 但不是真的要 shutdown. -r : shutdown 之後重新开机. -h : shutdown 之後关机. -n : 不经过 init , 由 shutdown 指令本身来做关机原创 2023-03-15 19:28:31 · 3297 阅读 · 0 评论 -
linux_服务器搭建(ftp服务器搭建、lftp工具使用、nfs服务器搭建、ssh服务器搭建、scp工具使用)
ftp服务器文件的上传和下载,远程下载数据等 ftp服务器开机自动运行 停止ftp服务器 vsftpd 安装 gedit /etc/vsftpd.conf #使用gedit文本编辑器打开该文件 service vsftpd start ftp 实名用户登录 ftp匿名用户登录 数据上传put 数据下载get lftp工具 mput下载多个 ftp上传和下载目录 nfs服务器搭建 ssh服务器搭建、scp工具使用 远程登录访问 scp命令anon_root=/home/itcast/ftp #匿名用户f原创 2023-03-14 21:16:14 · 1059 阅读 · 0 评论