linux环境编程
文章平均质量分 79
theArcticOcean
Website: https://www.weiy.city
Wechat Subscription Account: 胡桃小院
展开
-
进程通信之读写锁
读写锁读写锁的分配规则 1. 没有线程持有读写锁进行写,任意数量的线程可以持有该读写锁用于读 2. 只有没有线程持有给定的读写锁用于读或者写的时候,才能分配读写锁用于写。 如果修改数据频繁,那么可以考虑用读写锁替代互斥锁。 获取与释放如果对应的读写锁已由某个写入者持有,那么阻塞pthread_rwlock_rdlock获取读出锁如果对应的读写锁已由另一个写入者持有,那就阻塞pthread原创 2016-09-21 22:48:01 · 1028 阅读 · 0 评论 -
SDL点、线、面及图像加载
SDL画图系列之点,线,面点SDL库并没有提供直接画点的函数。不过在开发文档中提供了一个在任意视频模式下画出一个像素点的例子。我们可以写自己的画点函数。#include <stdio.h>#include <stdlib.h>#include <SDL.h>#define Uint32 unsigned int#define Uint16 unsigned short/* custom dra原创 2017-02-19 21:54:48 · 2480 阅读 · 0 评论 -
SDL应用之三种字库
SFont 库sfont用大小写英文字母和符号进行内容显示,资源即是字体图片。 sfont下载:http://www.linux-games.com/sfont 我下载SFont 2.03后,解压并make,产生了许多的文件,其中包括三个SFont的测试文件,下面是SFontTest3的效果: 自己来写一个试试,将.h文件,.c文件,要使用的图片文件(我就直接使用24P_Copperpla原创 2017-02-22 20:24:17 · 1742 阅读 · 0 评论 -
AT&T 内联汇编
本文大部分内容学习自《Professional Assembly Language》内联汇编系统调用的参数存于EBX,ECX,EDX,ESI,EDI,EBP. 返回值存放在EAX寄存器中。 内联汇编(inline assembly)即在高级语言(C,C++)中加入汇编内容进行编码。 在高级语言中使用汇编常常有这些方法:单独用汇编编写函数然后在C程序中调用;用C写好函数,使用gcc的-S选项得到汇原创 2017-03-08 10:08:02 · 911 阅读 · 0 评论 -
linux 静态库与共享库
本文笔记学习自《Professional Assembly Language》 静态库当我们将不同的函数写在不同的文件中,如果主程序调用这些函数,就需要相应的目标文件才能生成可执行文件。目标文件很多的话,不便于管理。我们可以将目标文件整合到一个存档文件中,编译器从存档文件挑选出需要的目标文件,这样的存档文件称之为库文件(library file)。 假设库文件的目标代码被编译到了主程序中,就称之为原创 2017-03-08 17:54:40 · 428 阅读 · 0 评论 -
SDL 加载显示JPEG图片
在《 SDL点、线、面及图像加载 》一文中自己用SDL显示JPEG失败,现在有了解决方案。 关键函数: SDL_rwops.h:extern DECLSPEC SDL_RWops * SDLCALL SDL_RWFromFile(const char *file, const char *mode);extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWop原创 2017-05-06 10:49:45 · 4309 阅读 · 0 评论 -
SDL简单动画
动画是利用人类的视觉特点被创造出来的艺术品。图像在不同的时间和位置出现可以产生一定的视觉特效。SDL程序可以制作动画。想要制作出动画的效果,就需要把握好单位时间内出现的图片数量这一个因素。一般来说,一秒24帧可以得到流畅的动画场景。那么两张图像的时间间隔保持约为41666 microseconds. 下面例子中的GIF图片是GifCam.exe截屏制成。制作一个简单动画: 红色的圆圈不断扩大原创 2017-01-16 18:24:21 · 2460 阅读 · 4 评论 -
【github myLocker】线程返回值,重复引用头文件,二进制文件I/O
线程返回值子线程使用pthread_exit()向调用线程返回数值,函数原型:void pthread_exit(void *retval); 调用线程使用函数pthread_join()的第二个参数void **接收返回值。函数原型:int pthread_join(pthread_t thread, void **retval); 例子: main中创建一个线程pthTextCode,在新原创 2017-08-13 22:37:53 · 665 阅读 · 0 评论 -
【github myLocker】select监听多个fd,互斥锁保护终端交互
select监听多个fdselect用于多个fd的管理,检测哪个fd可读、可写,如果可读则接收消息(读),如果可写则输出消息(写)。 相关的函数:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int f原创 2017-08-26 22:05:59 · 1584 阅读 · 0 评论 -
【github myLocker】线程切换调试,读写指针修改文件,socket 阻塞设置
线程切换调试gdb查看帮助:help(gdb) helpList of classes of commands:aliases -- Aliases of other commandsbreakpoints -- Making program stop at certain pointsdata -- Examining datafiles -- Specifying and examini原创 2017-08-26 21:51:51 · 625 阅读 · 0 评论 -
libc system函数的探究
system导致父进程等待在mac上的在线帮助有对system的如下说明: The system() function hands the argument command to the command interpreter sh(1). The calling process waits for the shell to finish executing the c...原创 2018-07-29 09:53:50 · 1584 阅读 · 3 评论 -
linux图形编程之SDL
SDL startSDL是编写跨平台游戏和多媒体应用的支持库,包含了对图形、声音、游戏杆、线程等支持,内容丰富、应用广泛。 ubuntu15.04上安装SDL: Source Code在 http://www.libsdl.org/download-1.2.php上,下载SDL-1.2.15.tar.gz。解压tar -zxvf SDL-1.2.15.tar.gz,在加压后的文件夹SDL-1.2原创 2017-01-14 16:22:00 · 5742 阅读 · 0 评论 -
linux 下基本的I/O系统函数
5个基本的系统函数: open(), read(), write(), lseek(), close() 由于本文大多数内容不是原创,只是简单的整理,所以就作为转载篇吧。以下的内容来自《linux C API文档》 来源: net.pku.edu.cn/~yhf/linux_c 整理: 飞龙open 打开文件相关函数 read,write,fcntl,close,link,stat,um转载 2016-05-23 21:31:40 · 888 阅读 · 0 评论 -
简单的多线程数据传输
说明为创建一份小型的工程代码,自己想出一个简单的数据传输任务。 主进程创建四个线程,st1,st2,st3,rt,让前三个线程向最后一个线程灌包,最后一个线程接收数据包。 目的IP: 10.21.100.152 目的端口:9001 各个进程被创建后立即进行相应的工作,灌包或者收包。rt接收到数据包后打印出相应的信息。makefile工程文件的编译会接触到makefile,下面是总结的常用的m原创 2016-10-03 22:47:12 · 3089 阅读 · 0 评论 -
makefile学习 (2) —— autotools生成makefile
autotools生成makefile利用autotools系列工具可以快速生成makefile,我们输入目标文件,依赖文件,文件目录等信息即可。 我们需要保证有这些工具:aclocal, autoscan, autoconf, autoconf, autoheader, automake. 在安装的时候仅仅需要指令 yum install automake 或 sudo apt-get ins原创 2016-10-30 19:43:47 · 636 阅读 · 0 评论 -
linux C —— 文件操作函数
chmodint chmod(const char *path, mode_t mode) 将文件read的文件权限变成所有者有读写权限,其他用户只有读的权限。这和shell指令中的chmod有相同的功效。#include <stdio.h>#include <stdlib.h>#include <sys/stat.h> /* for chmod */#include <sys/types.原创 2016-11-22 22:07:57 · 4501 阅读 · 0 评论 -
linux C —— gdb调试、简单Makefile
gcc可以编译c, c++, object-c, java等众多的语言程序 g++则是专注于C和C++。 GDB 调试器是一个功能强大的工具,它可以做很多的调试工作,如断点,单步跟踪等。 相关命令: GDB命令 格式 含义 简写 list List[开始,结束] 列出代码 l print Printf p 打印变量 p break Brea原创 2016-05-27 22:12:10 · 2373 阅读 · 0 评论 -
makefile学习 (1)
学习自《跟我一起写Makefile》,《linux网络编程》 编译和链接Uinx下编译产生的.o文件是中间代码文件,object file. 只要源文件代码正确,那么我们就可以编译出相应的object file。到了链接阶段(链接函数和全局变量),链接器寻找object file,如果中间代码文件太多,则可以给其打包,生成Archive File,即.a文件,链接后生成可执行文件。 编译器只检查原创 2016-10-06 17:52:50 · 1021 阅读 · 0 评论 -
unix环境编程练习 (1)
函数练习1.对mmap映射地址操作mmap(), fstat()mmap(): 将文件和设备空间映射到内存中,内存操作比磁盘更快。映射成功返回内存地址,是被返回-1.之后可以直接对映射的地址进行操作。 fstat()获取文件的状态。#include <stdio.h>#include <unistd.h>#include <sys/mman.h>#include <sys/types.h>原创 2016-09-17 15:30:34 · 1137 阅读 · 0 评论 -
unix环境编程练习 (2)
系统调用系统调用是由操作系统核心提供,运行于核心态;普通函数调用由库函数或者用户自定义,处于用户态。那些标准函数都是由系统调用完成的。 查看系统调用的接口:[edemon@CentOS ~]$ man 2 syscalls进程不能访问内核,系统调用则是接口,由他们告诉内核进程的请求是什么。 错误码errno: 1–34存在于: /usr/include/asm-generic/errno-bas原创 2016-12-21 14:30:05 · 767 阅读 · 0 评论 -
进程间的通信
信号信号是软件中断的模拟,可以在人格时候发给进程,如果进程处于未执行状态,该信号就由内核保存,直到进程恢复执行再传递给它。 SIGKILL和SEGSTOP是应用程序无法捕捉和忽略的。 几个常用的快捷键和信号: ctrl + C —— SIGINT 中断信号 ctrl + \ —— SIGQUIT 退出信号 ctrl + Z —— SIGTSTP 进程挂起 functions about原创 2017-01-09 17:16:27 · 445 阅读 · 0 评论 -
杂记 (6) —— vim, gcc, gdb, man
vi vistual block缩进选中vistual block, shift + > or <gdb无法调试最新gcc编译的程序$ gcc -g -o fcopy fcopy.c$ gdb fcopyGNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6)Copyright (C) 2010 Free Software Foundation,原创 2016-12-03 11:06:01 · 858 阅读 · 0 评论 -
QT开发GIF截屏工具的问题记录
项目地址:https://github.com/theArcticOcean/GiferQT log 重定向问题。描述:在QML中的log print成功输出所有信息,CPP中的打印不能显示文件名,行号,函数名看了帮助文档中的例子 QtMessageHandler qInstallMessageHandler(QtMessageHandler handler) 安装我们自己的han...原创 2018-07-22 16:26:50 · 364 阅读 · 0 评论