
linux
小二人
车机系统及应用软件开发。
展开
-
绑定socket到指定网卡
绑定socketFd到指定网卡eth0,后续socketFd的网络通信都走的是eth0网卡;struct ifreq if_eth0;strncpy(if_eth0.ifr_name, "eth0", IFNAMSIZ);setsockopt(socketFd, SOL_SOCKET, SO_BINDTODEVICE, (char *)&if_eth0, siz原创 2016-12-14 19:55:48 · 3543 阅读 · 0 评论 -
H264码流分析
一帧原始的H.264码流数据常由 [StartCode] [Header] [Payload] 三部分组成,Start Code 用于标示这是一帧数据的开始,必须是"00 00 00 01" 或"00 00 01";Header占一个字节,结构如下:+---------------+|0|1|2|3|4|5|6|7|+-+-+-+-+-+-+-+-+|F|NRI| Type原创 2017-09-15 11:15:44 · 542 阅读 · 0 评论 -
C中调用C++函数与C++中调用C函数
转自:http://www.cppblog.com/franksunny/archive/2007/11/29/37510.htmlC中调用C++函数将 C++ 函数声明为``extern "C"''(在C++ 代码里做这个声明),然后调用它(在 C 或者 C++ 代码里调用)。例如:// C++ code:extern "C" void f(int);void f(int转载 2017-09-21 16:53:00 · 3087 阅读 · 0 评论 -
Linux软连接和硬链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的转载 2017-11-09 16:02:57 · 215 阅读 · 0 评论 -
UDP主要丢包原因及具体问题分析
一、主要丢包原因1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通转载 2017-11-09 15:59:48 · 768 阅读 · 0 评论 -
二维平面上判断点是否在三角形内
已知三角形的三个顶点坐标,判断某个点是否在三角形中(在三角形的边上,我们也视作在三角形中),本文给出了三种方法。 算法1利用面积法,如上图所示,如果点P在三角形ABC的内部,则三个小三角形PAB, PBC, PAC的面积之和 = ABC的面积,反之则不相等。已知三角形的三个顶点坐标求其面积,可以根据向量的叉乘,参考here。该算法详见后面代码中的函数:IsPointInTr...转载 2018-08-18 16:22:56 · 1490 阅读 · 0 评论 -
linux kill信号列表,kill和killall:向进程发送信号
linux kill信号列表$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2...转载 2018-10-13 15:45:23 · 3329 阅读 · 0 评论 -
linux编程获取本机网卡信息
转自:https://blog.youkuaiyun.com/shaderdx/article/details/78403437ifaddrs结构体定义如下:struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* N...转载 2018-10-13 16:20:56 · 1247 阅读 · 0 评论 -
linux之find命令详解
转自:https://www.cnblogs.com/sandea/p/6457921.html查找文件find ./ -type f查找目录find ./ -type d查找名字为test的文件或目录find ./ -name test查找名字符合正则表达式的文件,注意前面的‘.*’(查找到的文件带有目录)find ./ -regex .*so.*\.gz查找目录并列出目录下...转载 2018-10-13 16:23:41 · 131 阅读 · 0 评论 -
编译工程时报java:[1,0] illegal character: \65279问题排查与解决过程
最近开发人员通过SVN提交了xxx.java文件,因发布时该包有问题需要回退,故SCM将该xxx.java文件用editplus打开删除了新添的一行,删除后重新编译打包,却报了如下异常:java:[1,0] illegal character: \65279表面看着该文件确实没错,看不出来问题,后来从SVN上更新下代码以后,发现本地也不报错,后来通过Eclipse查看了该xxx.java类的...转载 2018-11-16 15:13:55 · 334 阅读 · 0 评论 -
linux lsof命令详解
简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应...转载 2019-03-09 15:32:01 · 2037 阅读 · 0 评论 -
linux下常用的几个时间函数:time,gettimeofday,clock_gettime
转自:https://blog.youkuaiyun.com/rosekin/article/details/17246797time()提供了秒级的精确度头文件<time.h>函数原型time_ttime(time_t*timer)函数返回从TC1970-1-10:0:0开始到现在的秒数用time()函数结合其他函数(如:localtime、gmt...转载 2019-03-09 16:00:24 · 397 阅读 · 0 评论 -
linux c setitimer用法说明
在linux c编程中,setitimer是一个比较常用的函数,可用来实现延时和定时的功能,网上有各种零零散散的用法说明,都只提到了个别用法,今天抽空实践整理了一份比较详细的:使用时需要引入的头文件:#include <sys/time.h>setitimer函数原型:int setitimer(int which, const struct itimerval *new_...转载 2019-03-09 16:01:29 · 408 阅读 · 0 评论 -
TCP协议端口状态说明
转自:https://www.cnblogs.com/jessezeng/p/5617105.html了解TCP协议端口的连接状态,对排除和定位网络或系统故障会有很大帮助,因此了解一下是有必要的:一、LISTENING 提供某种服务,侦听远方TCP端口的连接请求,当提供的服务没有被连接时,处于LISTENING状态,端口是开放的,等待被连接。二、SYN_SENT (客户端状态)...转载 2019-03-09 16:27:48 · 641 阅读 · 0 评论 -
Ubuntu格式化U盘
首先,产生此文的原因呢,是因为一些童鞋还不会Ubuntu下格式化U盘,在Windows下格式化呢,大小也格不正确。总之Ubuntu是很强大的!第一步:sudo fdisk -l 这个命令主要是查看磁盘分区详细情况,同时确定U盘分区的,这里就假设要格式化的U盘是 /dev/sdb 咯第二步:sudo umount /dev/sdb 这个命令主要是卸载U盘分区第三步:sudo mkfs.v...转载 2019-05-01 15:58:59 · 885 阅读 · 0 评论 -
Linux C 时间函数clock_gettime()的使用及Linux不同时钟的区别
函数: int clock_gettime(clockid_t clk_id, struct timespec *tp);clockid_t: 用于指定计时时钟的类型,有以下几种类型:CLOCK_REALTIME: 系统实时时间,从Epoch计时,可被设置更改。CLOCK_MONOTONIC: 系统运行时间,从系统启动时开始计时,系统休眠时不再计时(NTP与硬件时钟有问题时会影响其频率,没...转载 2019-06-18 17:24:59 · 2771 阅读 · 0 评论 -
细说new与malloc的10点区别
转自:http://www.codeceo.com/article/cpp-new-malloc-10-tips.html1. 申请的内存所在位置new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系转载 2017-09-14 19:20:12 · 300 阅读 · 0 评论 -
Linux系统挂载存储只读改成读写
1、mount:用于查看哪个模块输入只读,一般显示为:[root@ubuntu ~]# mount/dev/cciss/c0d0p2 on / type ext3 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)tmpfs on /dev/shm type tmpfs (rw)/dev/dm-0 on /hom转载 2017-08-24 11:08:29 · 10215 阅读 · 0 评论 -
用C写一个程序,打印出所有的源程序,要求不能用文件。
方法一:#include #define Q(x) #x#define P(x) char * s = Q(x);#define M main(){printf("#include \n#define Q(x) #x\n#define P(x) char * s = Q(x);\n#define M %s\np(M)M", s);}P(M)M 方法二:原创 2013-03-06 21:23:33 · 606 阅读 · 0 评论 -
Bloom Filter概念和原理
转自:http://blog.youkuaiyun.com/jiaomeng/article/details/1495500Bloom Filter概念和原理焦萌 2007年1月27日 Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合转载 2013-03-06 20:45:17 · 364 阅读 · 0 评论 -
select函数(linux C语言)
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式转载 2016-12-12 19:25:43 · 312 阅读 · 0 评论 -
linux下socket connect非阻塞与阻塞
将一个socket 设置成阻塞模式和非阻塞模式,使用fcntl方法,设置成非阻塞模式: flags = fcntl(sockfd, F_GETFL, 0); //获取文件的flags值。 fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); //设置成非阻塞模式;原创 2016-12-12 19:28:12 · 512 阅读 · 0 评论 -
Linux 下socket编程客户端与服务端代码
客户端代码:[cpp] view plain copy/* client */ #include #include #include #include #include #include #include #include #include #define PORT转载 2016-11-28 17:05:48 · 347 阅读 · 0 评论 -
绑定socket描述符到一个网络设备
网络编程中有时明明用eth0的地址来bind一个udp套接口, 可是发出去的包却是从eht1走的, 在网上找到这么一段话解释该问题: 在多 IP/网卡主机上,UDP 包/协议会自动根据路由最优来选择从哪个网卡发数据包出去,即使你在此之前把该 SOCKET 绑定到了另一个网卡上。这样一来,如果你执行了绑定,则在 UDP 包中所代表的源 IP 字段可能不是你的数据包真正发出的地址。比如:你有转载 2016-11-28 17:07:15 · 1218 阅读 · 0 评论 -
setsockopt()函数使用详解
1. closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt (s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,转载 2016-11-28 17:08:05 · 423 阅读 · 0 评论 -
ffmpeg的各种功能用法例子
ffmpeg的各种功能用法例子:http://blog.youkuaiyun.com/leixiaohua1020/article/category/1360795原创 2016-11-28 18:28:35 · 665 阅读 · 0 评论 -
SecureCRT无法输入的问题
刚刚打开SecureCRT连接串口的时候只可以显示但是无法输入,在选项-->会话选项-->连接-->串行-->流控 中选项的全部取消掉,如下图:原创 2016-12-21 09:24:01 · 7342 阅读 · 0 评论 -
Socket send函数和recv函数详解
recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。这里只描转载 2017-01-18 19:52:28 · 604 阅读 · 0 评论 -
Linux下使用system()函数一定要谨慎
转载自:https://my.oschina.net/renhc/blog/53580曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,这转载 2017-06-05 09:47:22 · 8571 阅读 · 1 评论 -
Linux下system()函数引发的错误
转载自:https://my.oschina.net/renhc/blog/54582今天,一个运行了近一年的程序突然挂掉了,问题定位到是system()函数出的问题,关于该函数的简单使用在我上篇文章做过介绍: http://my.oschina.net/renhc/blog/53580先看一下问题简单封装了一下system()函数:int pox_system(const转载 2017-06-05 09:57:49 · 459 阅读 · 0 评论 -
基于管道的popen和pclose函数
转载自:https://my.oschina.net/renhc/blog/35116标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参转载 2017-06-05 15:13:14 · 399 阅读 · 0 评论 -
Netlink实现热拔插监控
转自:http://blog.chinaunix.net/uid-24943863-id-3223000.html 新的Linux内核使用udev代替了hotplug作为热拔插管理,虽然有udevd管理热拔插,但有时候我们还是需要在应用程序中检测热拔插事件以便快速地处理,比如在读写SD卡的时候拔下SD卡,那么需要立即检测出该情况,然后结束读写线程,防止VFS崩溃。Netlink是面向数据包的转载 2017-08-08 17:39:17 · 451 阅读 · 2 评论 -
linux使用Inotify监控目录或者文件状态变更
转自:http://blog.youkuaiyun.com/daiyudong2020/article/details/51695502基本概念:Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。需求:1.有一个文件采集进程,需要对日志文件进行采集,日志文件转载 2017-08-08 17:40:52 · 2846 阅读 · 1 评论 -
SecureCRT自动记录日志
在菜单里选择“选项”——“全局选项”然后选择常规——默认会话——编辑默认设置然后选择日志文件在日志文件名里填入你想保存的日志路径名加日志文件名这里为了可以每个会话都打成一个日志,可以采用支持的参数%H 主机名 %S 会话名%Y 年份 %M 月份 %D 日%h 小时 %m 分钟 %s 秒例如我填写的E:\Development\SecureCRT\Logs\%H\%Y-%M-%D_%...转载 2019-09-18 17:17:43 · 227 阅读 · 0 评论