include

LinuxC——1.文件读写

时光怂恿深爱的人放手 提交于 2020-04-05 17:27:02
LinuxC——1.文件读写 1.❤️文件IO 从CPU到文件是Output的一个过程,从文件到CPU是一个Input的过程,这个过程是以CPU为点的 2.🧡系统函数 open:打开文件 close:关闭文件 read:读数据 write:写数据 lseek:移动文件中读写位置 dup:文件书写位置重定位函数,重定位可以写入另一个文件 fcntl:文件描述符设置 ioctl:一个特殊函数 3.💛文件读写的简单例子 open函数:通过fd,找到块设备文件 文件系统是一个程序代码,组织块设备所有文件 文件系统属于OS一部分 找到文件后,调用块设备驱动,打开文件 打开成功,返回非负操作符 打开失败,返回-1 write函数:利用打开成功返回的,向文件里面写数据 lseek函数:利用文件描述符,将文件读写位置调整到文件相应位置 why设置文件头 write的时候,文件读写位置已经到了末尾 read函数:从文件头开始,读取指定长度的数据到buf中 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> int main() { int fd = 0; fd = open("./file.txt", O

boost lockfree高性能无锁队列

偶尔善良 提交于 2020-04-05 17:01:51
#include <boost/thread/thread.hpp> #include <boost/lockfree/queue.hpp> #include <iostream> #include <glog/logging.h> #include <boost/atomic.hpp> boost::atomic_int producer_count( 0 ); boost::atomic_int consumer_count( 0 ); boost::lockfree::queue< int > queue( 128 ); const int iterations = 1 ; const int producer_thread_count = 4 ; const int consumer_thread_count = 4 ; void producer( void ) { for ( int i = 0 ; i != iterations; ++i) { int value = ++producer_count; sleep( 3 ); while (!queue.push(value)); } } boost::atomic< bool > done( false ); void consumer( void ) { int value; while (!done) {

assert()函数用法总结

隐身守侯 提交于 2020-04-04 21:58:46
assert()函数用法总结   assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: #include <stdio.h>#include <assert.h>#include <stdlib.h>int main( void ){ FILE *fp; fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件 assert( fp ); //所以这里不会出错 fclose( fp ); fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败 assert( fp ); //所以这里出错 fclose( fp ); //程序永远都执行不到这里来 return 0;} [root@localhost error_process]# gcc badptr.c [root@localhost error

assert()函数用法总结

别来无恙 提交于 2020-04-04 21:51:54
assert()函数用法总结 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: #include <stdio.h>#include <assert.h>#include <stdlib.h>int main( void ){ FILE *fp; fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件 assert( fp ); //所以这里不会出错 fclose( fp ); fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败 assert( fp ); //所以这里出错 fclose( fp ); //程序永远都执行不到这里来 return 0;} [root@localhost error_process]# gcc badptr.c [root@localhost error

assert()函数用法总结

假装没事ソ 提交于 2020-04-04 21:50:39
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h>void assert( int expression );   assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: #include <stdio.h>#include <assert.h>#include <stdlib.h>int main( void ){ FILE *fp; fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件 assert( fp ); //所以这里不会出错 fclose( fp ); fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败 assert( fp ); //所以这里出错 fclose( fp ); //程序永远都执行不到这里来 return 0;} [root@localhost error_process]# gcc badptr.c [root@localhost error_process]# ./a

2. CMake 系列 - 编译多文件项目

依然范特西╮ 提交于 2020-04-04 17:00:45
目录 1. 编译不使用第三方库的项目 1.1 项目目录结构 1.2 相关代码 1.3 编译 2. 编译使用第三方库的项目 2.1 项目目录结构 2.2 相关代码 2.3 编译 1. 编译不使用第三方库的项目 1.1 项目目录结构 test/ ├── build ├── CMakeLists.txt └── src ├── include │ └── sub │ └── sub.h ├── init │ └── main.c └── sub └── sub.c 博主一般写项目都是以这种风格进行划分目录,这个风格也是参考内核风格。 build : 存放 cmake 生成的相关文件和make 编译生成的相关中间文件 CMakeLists.txt : 使用cmake 语法编写这个文件,cmake 负责将其转换为相对应makefile src : 存放源代码 include : 存放每个模块头文件,每个模块都有自己的目录; 1.2 相关代码 sub.h #ifndef _SUB_H #define _SUB_H int sub(const int a, const int b); #endif sub.c #include "sub/sub.h" int sub(const int a, const int b) { return a - b; } main.c #include "sub

【Linux】Linux C socket 编程之UDP

孤人 提交于 2020-04-04 16:32:59
发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后再发送一个终止消息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> int port=6789; int main(int argc, char** argv) { int socket_descriptor; //套接口描述字 int iter=0; char buf[80]; struct sockaddr_in address;//处理网络通信的地址 bzero(&address,sizeof(address)); address.sin_family=AF_INET; address.sin_addr.s_addr=inet_addr("127.0.0.1");//这里不一样 address.sin_port=htons(port); //创建一个 UDP socket socket_descriptor=socket(AF

QT-4.8.6 编译配置过程

你。 提交于 2020-04-04 05:53:26
1、编译 TSLib sudo apt-get install automake autogen libtool libtool-bin ./autogen.sh ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ac_cv_func_malloc_0_nonnull=yes --prefix=/opt/tslib-1.4 make sudo make install libtool --finish /opt/tslib-1.4/lib/ts/ 2、linux-arm-g++ qmake.conf # # qmake configuration for building with arm-linux-g++ # include(../../common/linux.conf) include(../../common/gcc-base-unix.conf) include(../../common/g++-unix.conf) include(../../common/qws.conf) # modifications to g++.conf QMAKE_CC = arm-linux-gnueabihf-gcc -lts QMAKE_CXX =

CentOS7 升级Openssl的办法

痞子三分冷 提交于 2020-04-03 18:03:37
1、查看安装的版本 openssl version -a OpenSSL 1.0.2 2、下载 openssl-1.1.1.tar.gz,目前最新是1.1.1,可以通过修改版本号的方式下载最新版本 最新版本可以在这个网站下载: https://www.openssl.org/source/ wget http://www.openssl.org/source/openssl-1.1.1.tar.gz 3、安装zlib和zlib-devel yum install -y zlib yum install zlib-devel 4、解压下载的openssl tar zxf openssl-1.1.1.tar.gz cd openssl-1.1.1 ./config shared zlib make make install mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/include/openssl /usr/include/openssl.bak ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl echo “/usr/local/ssl/lib” >> /etc/ld

opencv在图像显示中文

会有一股神秘感。 提交于 2020-04-03 08:33:25
在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母、矩形框等(opencv支持的)或者是中文汉字(借助freetype)。 1、显示数字/矩形框 #include <opencv/highgui.h> using namespace cv; //绘画 Mat image = imread(image_root + filename); Point p1(x,y), p2(x+w,y+h), p0(x+w/2, y+h/2); string label = 123456789; //数字 rectangle(image, p1, p2, Scalar(255, 0, 0)); putText(image, label.c_str(), p0, CV_FONT_HERSHEY_COMPLEX, 0.5, Scalar(0, 255, 0)); imwrite( image_root2 + filename, image ); 2、显示汉字 首先,下载freetype-2.6,在build/windows/vc2010中编译项目(我使用的是vs2012),在/objs/vc2010/Win32/下生成静态链接库freetype26.lib。 然后,新建项目,将freetype的include文件夹添加到项目的包含路径中,将freetype26