红联Linux门户

Linux帮助
  • Fedora和Ubuntu下安装OpenGL开发环境配置

    2015-10-23 - Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库在linux系统中默认都有,使用locate命令验证都在标准库目录(/usr/lib)下: [root@localhost GL]# locate libglut.so...

  • Linux下利用shell脚本随机生成密码

    2015-10-22 - 首先,安装expect yum install expect 生成方式,我们介绍二种,一是命令行方式,二是shell脚本方式。 (1)命令行生成随机密码 mkpasswd -l 14 -s 2 -c 3 -C 3 -d 4 生成一个14位的密码,至少包含2个特殊字符,3个小写字母,3个大写字母和4个数字。 (2)编写sh...

  • linux 2.6 usb自动检测

    2015-10-22 - 嵌入式开发,要对USB设备进行管理。在linux 2.4 下插入USB设备可以从系统配置文件/proc/scsi/usb-storage*/* 中读出USB设备的插入状态,该文件最好一行Attached为yes就是已经插上USB设备了,若为no就是没有插上。现在linux 2.6下,并没有/proc/scsi/usb-stor...

  • 交叉编译工具链为什么是arm-linux-而不是arm-linux-gcc

    2015-10-21 - 因为不只是需要用到arm-linux-gcc编译器,还需要用到如arm-linux-ld链接器这些工具,虽然从称谓上是交叉编译,其实是一个预处理、编译、链接的一系列过程。也就是说内核编译是个系统性的工程,需要用到/arm-linux-xxx等一系列工具。 arm-linux-gcc环境变量设...

  • 为Android增加一个关机命令

    2015-10-21 - 首先在external目录下创建一个目录shutdown,然后进入shutdown目录,创建两个文件Android.mk和shutdown.c,增加内容如下: #define LOG_TAG shutdown #include stdio.h #include stdlib.h #include unistd.h #include sys/reboot.h #include utils/Log.h int...

  • linux串口阻塞与非阻塞参数设置

    2015-10-21 - 在串口设置中,有以下两个参数可以决定是否阻塞。 在打开串口时不加O_NODELAY,可用下面的第二种方法,来进行阻塞/非阻塞的设定 c_cc[VTIME] 非规范模式读取时的超时时间(单位:百毫秒),可以这么理解,从接收到后一个字节开始计时,如果超时,则退出READ c_cc[...

  • 现在写PHP,你应该知道这些现在写PHP,你应该知道这些

    2015-10-21 - 首先你应该是在用 PHP 5.3 以上的版本,如果 PHP 版本在这之下,是时候该升级了。我建议如果有条件,最好使用最新的版本。 你应该看过 PHP The Right Way(http://wulijun.github.io/php-the-right-way/),这篇文章包含了很多内容,而且还能再扩展开。大部...

  • Bash comma的一点妙用

    2015-10-20 - Bash 的 comma operator 其实跟 C 语言的作用差不多,但还有几个特别有意思的用法: 1、依次计算用 comma operator 链接的几个表达式,但只取最后一个表达式的值,代码如下: let t2 = (( a = 9, 15 / 3)) echo $t2 此时 a 的值为 9, 但 echo 语句返回值却...

  • Unix环境高级编程的学习环境的搭建

    2015-10-20 - 由于学习的需要, 必须在我的Linux下面搭建这样一个开发环境. (本人使用的操作系统是 Ubuntu 15.04LTS) 1.在网上下载书中源代码, 点此连接: http://www.apuebook.com/code3e.html 2.解压文件按 3.cd apue.3e 4.make 在 make 的这个过程中一般会出错,后面显示...

  • Linux时间时区详解与常用时间函数

    2015-10-19 - 时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间。 UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计算的。 UTC时间与本地时间 UTC + 时区差 = 本地时间 时区差东为正,西为...

  • 在linux下执行一个简单的C程序

    2015-10-19 - 近来在linux部署了一个系统,想着顺便学习一下linux系统。想想也觉得丢人,作为一个程序员linux的水平还停留在幼儿园的阶段,实在是不应该,今天就编译了一个简单C的hello world程序,在这里记录下来,往后还得多多学习才行。 编译单个文件 首先 vim hello.c...

  • socket在windows和Linux下的区别

    2015-10-18 - 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup WSADATA wsaData; err = WSAStartup(0x202,wsaData); if ( err != 0 ) { return 0; } else if ( LOBYTE( wsaData.wVersion ) != 2 || HI...

  • linux线程id与进程id对应关系

    2015-10-18 - linux中的线程是基于进程实现的,每个线程都会有一个进程对应,通过gettid()可以获取到该进程id。另外,通过pthread_self()获取到的是POSIX thread id。 下面简单举个例子。 #include pthread.h #include stdio.h #include stdlib.h #include unistd.h #incl...

  • 使用shell脚本清空文件使用shell脚本清空文件

    2015-10-17 - 在最近的项目中,会生成很多日志文件,所以需要写一个脚本来手动清空它们,下面提供几种典型方法。 方法1 代码 #!/bin/bash ##方法1 echo $1 echo $1 cleaned up. 运行截图 说明 我想大家应该注意到了文件其实并没有真正被清空,而是有一个空行。 方法2 代码...

  • 编写更好Bash脚本的8个建议编写更好Bash脚本的8个建议

    2015-10-17 - 在我最开始管理Linux和Unix服务器时,经常遇到其他管理员编写的一大堆临时脚本。时常会因为其中某个脚本突然停止工作而进行故障排查。有时这些脚本编写得规范好理解,其他时候则是杂乱且令人困惑。 虽然排查编写糟糕的脚本很麻烦,但我从中吸取到了教训。即...

  • 加强linux c/c++多线程程序的稳定

    2015-10-16 - 要想使写出的代码稳定可靠,以下是几个措施: 一.确保线程安全 要做到下面两点 1.使用可重入的函数reentrant :即可以在任意时刻被中断, 稍后再继续运行,不会丢失数据的函数。即此类函数中不使用能被其他线程改写的变量. 2.在使用全局变量时保护自己的数据...

  • pyinfo():一个像phpinfo一样的Python脚本pyinfo():一个像phpinfo一样的Python脚本

    2015-10-16 - 作为一个热衷于 php 的家伙,我已经习惯了使用 phpinfo() 函数来让我轻松访问 php.ini 里的配置和加载的模块等信息。当然我也想要使用一个不存在的 pyinfo() 函数,但没有成功。按下 CTRL-E,google 一下是否有人实现了它? 是的,有人已经实现了。但是,对...

  • Emacs安装clojure开发环境Emacs安装clojure开发环境

    2015-10-15 - 安装CIDER模块 还是比较简单的,就是用list-packages查找,找到CIDER后,安装。 直接用官方文档的命令安装会失败,还是用上面的方式。 使用middleware匹配版本 工程的project.clj文件中添加倒数第二行 (defproject project1 0.1.0-SNAPSHOT :description FIX...

  • QSystemSemaphore:在进程里做互斥的建议,针对Linux的特殊说明

    2015-10-15 - 关于QT5.5的QSystemSemaphore,英文的帮助文档。 例子 QSystemSemaphore sem(market, 3, QSystemSemaphore::Create); // resources available == 3 sem.acquire(); // resources available == 2 sem.acquire(); // resources available == 1 sem.acquire();...

  • linux gdb调试多线程多进程显示宏

    2015-10-15 - 一、gdb调试多线程 gdb)info thread 查看当前进程的线程。 gdb)thread ID 切换调试的线程为指定ID的线程。 gdb)break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 gdb)set scheduler-locking off|on|step。在使用step或...

  • linux下dup/dup2函数的用法

    2015-10-14 - 系统调用dup和dup2能够复制文件描述符。dup返回新的文件文件描述符(没有用的文件描述符最小的编号)。dup2可以让用户指定返回的文件描述符的值,如果需要,则首先接近newfd的值,他通常用来重新打开或者重定向一个文件描述符。 他的原型如下: #include uns...

  • 向vivi中加入命令

    2015-10-14 - 在vivi的lib/command.c中添加自己的命令。 核心数据结构user_command。 typedef struct user_command { const char *name; //命令名 void (*cmdfunc)(int argc, const char **); //命令执行函数 struct user_command *next_cmd; //下一个命令 const char *he...

  • Linux下JNI简单实现过程

    2015-10-14 - 大概梳理了一下JNI的过程: start-先写好A.java文件,里面添加native方法B,调用库C.so-编译成.class文件-用javac生成.h文件,文件包含Java_A_B的方法声明-在.c文件实现方法-.c编为C.so库文件-运行A.java-end 下面是具体步骤。 首先编写一个java程序 HelloJN...

  • 看完这些问题后,你还会说自己懂C语言么?看完这些问题后,你还会说自己懂C语言么?

    2015-10-14 - 这篇文章的目的是让每个程序员(特别是 C 程序员)说:我真的不懂 C。我想要让大家看到 C 语言的那些阴暗角落比我们想象中更近,甚至那些平常的代码中就包含着未定义的行为。 这篇文章设置了一系列的问题和答案。所有的例子都是从源代码中单独分离出来的。 1...

  • Linux下QT中执行shell命令

    2015-10-14 - 当需要在QT中执行shell命令时可以利用以下方法: (1)首先包含头文件: #include QProcess (2)执行shell命令: QProcess::execute(ls); ///////////////////// #include QProcess void Widget:on_pushButton_clicked() { //* system(ls);//调用LINUX C函...

  • linux多进程通信

    2015-10-12 - 信号量机制实现进程通信: 使用sem_open,sem_unlink,sem_getvalue,sem_post,sem_wait,sem_close,等信号量机制 1.sem_sync.h #ifndef _SEM_SYNC_H_ #define _SEM_SYNC_H_ #include sys/types.h #include sys/ipc.h #include sys/shm.h #include stdio.h...

  • 重新敲一遍代码,胜过拷贝粘贴重新敲一遍代码,胜过拷贝粘贴

    2015-10-11 - 如今这个时代,Google 和 Stack Overflow(http://stackoverflow.com/) 已经成为了很多开发者不可或缺的工具。但是最近,后者貌似名声坏了。一方面,是因为表面上特别、有时候会偏离适度的原则(https://medium.com/@johnslegers/the-decline-of-stack-over...

  • Linux下使用dosemu写汇编Linux下使用dosemu写汇编

    2015-10-10 - ubuntu下安装dosemu (同类软件还有dosbox)模拟Dos环境 sudo apt-get install dosemu 安装汇编器和链接器 运行 sudo dosemu dosemu 下看到的C盘和D盘只是虚拟出来的,对应的目录在~/.dosemu/drives 下: 执行命令: cd ~/.dosemu/drives dos 下用到的程序放置...

  • linux下使用C++ Json库

    2015-10-10 - 安装Json库 1、下载JsonCpp http://sourceforge.net/projects/jsoncpp/files/ 2、下载scons http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download 3、解压scons-2.1.0.tar.gz tar -zvxf scons-2.1.0.tar.gz 我的解压到了/o...

  • 彻底释放Linux线程的资源

    2015-10-10 - Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中,反复建立线程,而线程又默认的退出,则最终线程资源耗尽,进程将不再能建立新的线...

  • 几种linux内核Image文件的区别几种linux内核Image文件的区别

    2015-10-10 - 内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的? 它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的头...

  • 按键从Linux到Android按键从Linux到Android

    2015-10-09 - 现在的普通按键也集成到Linux Input子系统中了,只需要把按键对应的IO端口配置好,按键就可以工作了。所以一般提供的BSP(或者叫作解决方案)中,已经完善了按键驱动。关键是快速的了解按键的映射。所以这里不作源码级分析。 Linux按键的扫描码 扫描码是Linux...

  • Linux应用层直接操作GPIO

    2015-10-08 - 在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低。这个大大地提高了灵活性,官方的文档有GPIO Sysfs Interface for Userspace(https://www.kernel.org/doc/Documentation/gpio/sysfs.txt),GPIO Sysfs(http:/...

  • Linux kernel中USB枚举失败总结

    2015-10-08 - 1.unable to enumerate USB device on port 1 出现这个问题,电压不够或者USB走线有干扰。 2.new config #1 exceeds power limit by 60mA shell@android:/ # [ 202.946798] usb 2-1.2: USB disconnect, device number 5 [ 205.229143] usb 2-1.3: new full s...

  • Shell程序的建立与执行

    2015-10-05 - 1).Shell脚本是一个文本文件,可以用任何文本编辑器创建和编辑。这个文件可以没有限定的扩展名,或都带.sh扩展名。 例如:创建一个文本文件hello,输入如下代码: echo Hello World! 2).Shell脚本的执行方式: 1. 将脚本作为可执行文件直接执行,但要注意用文...

  • 嵌入式Linux kernel LOGO的更换方法

    2015-10-05 - 【从制作logo到LCD显示或者VGA显示logo】 编者:linux的开机默认logo是一只可爱的小企鹅。这里我们可以把它换成我们自己喜爱的图片,只要将linux-2.6.32.2/drivers/video/logo/linux_logo_clut224.ppm替换成自己的图片即可。方法很简单,照着操作基本就没问...

  • 占用linux固定内存大小的小程序

    2015-10-04 - 做实验时要使某个程序占用固定大小的内存,这里写了一个小程序,在linux环境下: 1、首先使用free -mo -s 2 命令查看系统内存使用量: 2、打开另一个终端编写occupy.c源文件如下: #includestdio.h #includesys/mman.h #includestdlib.h #includeunistd.h //...

  • java程序占用linux固定CPU比例java程序占用linux固定CPU比例

    2015-10-04 - 编写占用固定CPU比例的程序的关键是控制好Busy和Idle的比例,注意要在毫秒级别上控制,如果Busy的比例为60%,则CPU的利用率在60%左右,这里Busy可以是一个无限循环,而Idle可以是sleep(),在Java中,System.currentTimeMillis()获得的是从1970到现在的毫秒数...

  • 八大排序算法的Python实现八大排序算法的Python实现

    2015-10-03 - 1、插入排序 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有...

  • 程序员应该避免的5种代码注释程序员应该避免的5种代码注释

    2015-10-02 - 你有没有这样的经历:别人审查过你的代码之后给出的注释,你认为是没有必要的?注释代码是为了提高代码的可读性,目的是为了能让其他人更容易理解你的代码。 我特别讨厌这5种注释类型以及制造它们的程序员。希望你不是其中之一。 1.自以为很了不得的程序员 p...