LINUX操作系统以及C编程
文章平均质量分 71
LINUX操作系统以及C编程
是这耀眼的瞬间
这个作者很懒,什么都没留下…
展开
-
函数指针入门使用方法以及回调函数
*定义函数指针*/在定义一个函数之后,在编译后,系统会为函数分配一段存储空间。,而函数指针也是一样,只不过保存的是函数存储空间的。/*函数指针赋值*/函数指针也可以当作参数在函数之间传递。如何在C语言中使用函数指针。/*函数指针使用*/............转载 2022-08-14 17:44:26 · 261 阅读 · 1 评论 -
C中main函数传参
在进行C语言编程时,有时候需要使用命令行传参,下面对其进行一个分析。int argc 命令行参数个数(包含文件名)const char* argv[] 指针数组:将命令行参数首地址作为元素,加上const关键字的意思是数组中的内容是不能修改的,很明显,我们进行传参的时候,里面的内容是不需要修改的,这就是const关键字的真正含义!{}...转载 2022-08-14 10:30:27 · 1813 阅读 · 0 评论 -
Linux命令之chown命令
一、命令简介Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令,chown 需要超级用户 root 的权限才能执行此命令。chown更改每个给定文件的用户和/或组所有权。如果只提供了所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,并且不会更改文件组。如果所有者后跟冒号和组名(或数字组ID),且两者之间没有空格,则文件的组所有权也会更改。如果用户名后面有冒号,但没有组名,则该用户将成为文件的所有者,并且文件组将更改为该用户的登录组。...转载 2022-08-10 17:11:18 · 9912 阅读 · 0 评论 -
chmod命令原理及用法详解(转)
chmod u+rwx, g+rwx, o+rwx filename 改命令说明对filename文件, 赋予user、group、other均有read、write、excute的权限。赋予group用户read、write权限。数字法:chmod 777 文件名 字母法: chmod u+rwx, g+rwx, o+rwx 文件名。000 无任何权限。...转载 2022-08-10 16:36:49 · 7604 阅读 · 0 评论 -
linux进程和进程结构内存分布
这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。BSS段属于静态内存分配。执行程序时,系统首先在内核空间中创建一个进程,为这个进程申请PCB(进程控制块task_struct)用于管理整个进程的所有资源,其中mm_struct成员用来管理与当先进程相关的所有内存资源。对和栈的其实地址默认是随机产生的,其目的是避免安全漏洞,但是可以指定堆中申请的起始地址。1.代码段,数据段,bss段,直接从磁盘拷贝到当前的内存空间,大小相等。...转载 2022-07-22 11:24:13 · 522 阅读 · 0 评论 -
结构体基本用法和字节对齐
*此处sizeof(数组名)就是数组所占空间的大小,sizeof(structstudent)就是一个结构体的长度,注意记得加struct*/printf("学生%s,成绩%d\n",stu_point2[i]->name,stu_point2[i]->score);4.如果嵌套了结构体,嵌套的结构体对齐到自己最大对齐数的整数倍处,结构体的整体大小就是所有所有最大的对齐数的整数倍(包含嵌套结构体的对齐数)。/*输出的是8个字节*/printf("请输入第%d个学生的成绩\n",i+1);...原创 2022-07-21 16:16:26 · 349 阅读 · 0 评论 -
iptables命令和防火墙规则的顺序
网络故障排查中,经常要抓包,windows有wireshark,linux最常用的是tcpdump,其中被问得最多的一个问题"iptables限制后,tcpdump还能抓到包吗?显而易见,数据包到达网卡后,tcpdump有能力直接捕获到,不受iptables的影响,此时数据包还没有到达iptables的。链,到达APP后,处理完报文从iptables出去,出去最终要走到。链再到tcpdump,所以此时受到iptables的。...转载 2022-07-21 16:03:42 · 998 阅读 · 0 评论 -
iptable和tcpdump的先后顺序
tcpdump在Linux系统防火墙规则的外转载 2022-07-18 16:13:17 · 722 阅读 · 0 评论 -
libevent定时器设置
#include <event.h>struct event ev;struct timeval tv;void time_cb(int fd, short event, void *argc){ printf("timer wakeup\n"); event_add(&ev, &tv); // reschedule timer}int main(){ struct event_base *base = event_init();//初始化e...转载 2021-11-11 14:29:02 · 249 阅读 · 0 评论 -
Wireshark抓包以及tcpdump抓包
tcpdump抓包命令tcpdump 的抓包保存到文件的命令参数是-w xxx.cap抓eth1的包 tcpdump -i eth1 -w /tmp/xxx.cap 抓 192.168.1.123的包 tcpdump -i eth1 host 192.168.1.123 -w /tmp/xxx.cap 抓192.168.1.123的80端口的包 tcpdump -i eth1 host 192.168.1.123 and port 80 -w /tmp/xxx.cap 抓192.168.转载 2021-09-01 19:13:15 · 5263 阅读 · 0 评论 -
C语言中static关键字和extern关键字
一.static关键字1.先来介绍它的第一条也是最重要的一条:隐藏。被static修饰的全局变量和函数,仅在当前文件可见。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg() { printf("Hello\n"); }下面是main.c的内容i原创 2021-08-29 19:15:39 · 710 阅读 · 1 评论 -
指针,字符,字符串,函数指针,总结
1.整型整型赋值 int a1 = 100;负数赋值 int a2 = -2;指针赋值 int *a3 = &a1; note:这种方式会让人感觉是把a1的地址传给了 *a3,其实是传的值是a3,好一点的写法,int *a3=NULL; a3 =&a1;数组赋值 int a3[5] = {1,2,3,4,5};其中的a3是数组a3的起始地址;printf("a3 = %p",a3)可以打出a3的地址,用*a3可以打出数组a3第一个值a3[0].printf("a3=%p",.原创 2021-08-25 21:33:18 · 227 阅读 · 0 评论 -
Linux下CMake简明教程
C程序组成:1.可执行文件;2.包含文件(include);3.依赖的库文件(.so / .a)操作系统功能:1.命令解释;2.进程管理;3.内存管理;4.输入/输出和外围设备管理;5.文件管理关机重启指令:shutdown -h now 关机;shutdown -r now 重启。Linux系统结构:硬件->内核->shell->外层应用程序...转载 2021-08-17 20:44:33 · 869 阅读 · 2 评论 -
LINUX系统操作笔记
linux 查看网卡是否有网线连接ethtool eth0[root@test ~]# ethtool eth0Settings for eth0: Current message level: 0x00000007 (7) Link detected: yes(表示插线), No(表示未插线)原创 2021-08-09 19:20:07 · 240 阅读 · 0 评论 -
MAKEFILE学习使用
1.MAKEFILE概述想要成为专业程序员,mekefile必须懂 !尤其是在Linux下进行软件编译,makefile就不得不自己写。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个 Shell脚本一样,其中也可以执行操作系统的命令。...原创 2021-08-06 15:21:32 · 413 阅读 · 0 评论 -
GCC编译原理
4 链接4.1 链接的基本描述链接是将各种代码和数据片段收集并组合成一个单一文件的过程,该文件可被加载到内存并执行。链接可以执行与编译时,在源代码翻译成机器代码时;也可执行与加载时,也就是在程序被加载器加载到内存并执行时;还可以执行与运行时,也就是由应用程序来执行。链接器在软件开发中扮演一个关键的角色,它们使得分离编译成为可能。我们不用将一个大型的应用程序组织为一个巨大的源文件,而是可以把它分解为更小、更好管理的模块,可以独立的修改和编译这些模块。当我们改变这些模块中的一个时,只需简单的重新编译它,并重新转载 2021-08-05 19:32:46 · 1044 阅读 · 0 评论 -
GDB调试技巧
gdb (运行程序):gdb lt-snmpd转载 2021-08-04 17:57:04 · 2159 阅读 · 0 评论