随笔分类 - Linux
摘要:转自:http://blog.csdn.net/dai_weitao/archive/2007/08/22/1754964.aspx条件变量分为两部分: 条件和变量. 条件本身是由互斥量保护的. 线程在改变条件状态前先要锁住互斥量.1. 初始化: 条件变量采用的数据类型是pthread_cond_t,在使用之前必须要进行初始化, 这包括两种方式:静态: 可以把常量PTHREAD_COND_INITIALIZER给静态分配的条件变量.动态: pthread_cond_init函数, 是释放动态条件变量的内存空间之前, 要用pthread_cond_destroy对其进行清理.#include&l
阅读全文
摘要:转自:http://www.cnblogs.com/feisky/archive/2010/03/08/1680950.html与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。条件的检测是在互斥锁的保护下进行的。如果一个条件为假,一个线程自动阻塞,并释放等待状态改变的互斥锁
阅读全文
摘要:#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h>#include<signal.h>void *test_program(void *arg);int main(int argc,char *argv[]){ int i; pthread_t thread_id; void *status; if(pthread_create(&thread_id,NULL,test_program,NULL)>0) { fprintf(st
阅读全文
摘要:/* ************************************************************************ * Filename: n_trylock.c * Description: * Version: 1.0 * Created: 2011骞?4鏈?2鏃?20鏃?9鍒?2绉? * Revision: none * Compiler: gcc * Author: wenhao (wh), hnrain1004@gmail.com * Company: sunplusapp * ***********************************
阅读全文
摘要:在Linux下使用ipmsg(飞鸽传书)ipmsg是个不错的局域网通讯软件,非常小巧,无需服务器端,使用非常方便。在Linux下使用需要自行编译。在官方网站下载源码:http://www.ipmsg.org/index.html.en(http://www.ipmsg.org/archive/g2ipmsg-0.9.5.tar.gz)解压后需要修改源码以支持中文:文件:src/codeset.c原文:#define IPMSG_PROTO_CODE "CP932"改成:#define IPMSG_PROTO_CODE "GBK"然后,编译之,为了方便在任
阅读全文
摘要:http://code.google.com/p/qipmsg/downloads/listdeb,rpm包都有!官网:http://ipmsg.org/
阅读全文
摘要:1、打 开 新 标 签 页启动 Vim 时用 "vim -p filename ...":tabe[dit] *:tabe* *:tabedit* *:tabnew*:tabnew 在当前标签页之后打开带空窗口的新标签页。:tabe[dit] [++opt] [+cmd] {file}:tabnew [++opt] [+cmd] {file} 打开新标签页并编辑 {file},其余和 |:edit| 类同。:tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* 打开新标签页并编辑 'path' 里的 {file
阅读全文
摘要:打开多个文件:1.vim还没有启动的时候:在终端里输入vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并且此时vim里会显示出file文件的内容。同时显示多个文件::split:vsplit在文件之间切换:1.文件间切换Ctrl+6—下一个文件:bn—下一个文件:bp—上一个文件对于用(v)split在多个窗格中打开的文件,这种方法只会在当前窗格中切换不同的文件。2.在窗格间切换的方法Ctrl+w+方向键——切换到前/下/上/后一个窗格Ctrl+w+h/j/k/l ——同上Ctrl+ww——依次向后切换
阅读全文
摘要:原地址:http://www.cnblogs.com/hicjiajia/archive/2011/01/20/1940154.html一、引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值。fork函数是Unix系统最杰出的成就之一,它是七十年代UNIX早期的开发者经过长期在理论和实践上的艰苦探索后取得的成果,一方面,它使操作系统在进程管理上付出了最小的代价,另一方面,又为程序员提供了一个简洁明了的多进程方法。与DOS和早期的Windows不同,Unix/Linux系统是真正实现多任务操作的系统,可以说,不使用多进程编程,就不能算是
阅读全文
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://tuhao.blogbus.com/logs/22833492.htmlextern char **environ;int execl(const char*fullpath, const char*arg, ...);int execlp(const char*file, const char*arg, ...);int execle(const char*fullpath, const char*arg, ..., char* constenvp[]);int execv(const char*fullpath,
阅读全文
摘要:源地址:http://blog.csdn.net/copal/archive/2010/04/06/5454279.aspx1. 概念按照 POSIX, 异步 (外部) 信号发送到整个进程.所有线程共享同一个设置, 即通过 sigaction 设置的线程处置方法.每个线程有自己的信号掩码, 线程库根据该掩码决定将信号发送到哪个线程.由于Linux 线程实现上的独特性, 外部信号始终发送到特定的线程. 2. 例子view plaincopy to clipboardprint?#include<pthread.h>#include<stdio.h>#include<
阅读全文
摘要:MPlayer名称概要说明一般注记播放选项 ( 仅用于 MPLAYER)分路器 / 媒体流选项OSD/ 字幕选项音频输出选项 ( 仅用于 MPLAYER)视频输出选项 ( 仅用于 MPLAYER)解码 / 滤镜选项编码选项 ( 仅用于 MENCODER)键盘控制SLAVE 模式协议文件示例BUGS作者标准声明名称 mplayer − Linux下的电影播放器mencoder − Linux下的电影编码器概要 mplayer [选项] [ 文件 | URL | 播放列表 | - ]mplayer [全局选项] 文件1 [特定选项] [文件2] [特定选项]mplayer [全局选项] {一组文件
阅读全文
摘要:播放文件使用 MPlayer 播放媒体文件最简单的方式是:mplayer <somefile>MPlayer 会自动检测文件的类型并加以播放,如果是音频文件,则会在命令行中显示该播放文件的状态信息;而假如是视频文件的话,则会打开一个新的播放窗口。倒退与快进在播放文件的时候,你可以通过以下三组快捷键来对播放进程进行倒退与快进操作:左方向键和右方向键:分别执行倒退 10 秒和快进 10 秒操作下方向键和上方向键:分别执行倒退 1 分钟和快进 1 分钟操作下翻页键和上翻页键:分别执行倒退 10 分钟和快进 10 分钟操作播放 DVD虽然 MPlayer 不支持 DVD 菜单,但是却能够播
阅读全文
摘要:首先说明,虽然我已经成功地做到了调用MPlayer并给它发送命令然后读取结果,但是具体的过程细节到底是怎样的我还不是很清楚。同样是因为这样的原因,我在文中的叙述可能有技术上的错误,欢迎指正popen()函数用于打开一个进程,返回结果是一个FILE*类型,这个返回值根据打开方式的不同,分别指向使用popen()打开的程序的输入流或输出流,可以直接当成一个普通文件来使用。popen()的第一个函数是命令行,就是要执行的程序的命令,第二个参数可以是"r“或"w",这和fopen是差不多的,一个是读取,这时候返回结果可以当成打开的进程的输出流,另一个w就是输入,返回结果可
阅读全文
摘要:本来是因为毕业设计要用到mplayer的slave模式 ,找了半天没有中文的,所以花了一晚上的时间翻译了下,官方的帮助文档,发在blog,大家交流下,小弟英语水平一般,就一个cet-4水平,要是哪里大牛勿鄙.....==============================================================================###################### Translate by Killua ######################slave模式协议-------------------在关于slave模式,MPlayer为后台
阅读全文
摘要:很多时候我们需要在程序退出的时候做一些诸如释放资源的操作,但程序退出的方式有很多种,比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等,因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就 是用atexit()函数来注册程序正常终止时要被调用的函数。 atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:int atexit (void (*)(void)); 在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的
阅读全文
摘要:进程间通信的一种方式是使用UNIX套接字,人们在使用这种方式时往往用的不是网络套接字,而是一种称为本地套接字的方式。这样做可以避免为黑客留下后门。创建使用套接字函数socket创建,不过传递的参数与网络套接字不同。域参数应该是PF_LOCAL或者PF_UNIX,而不能用PF_INET之类。本地套接字的通讯类型应该是SOCK_STREAM或SOCK_DGRAM,协议为默认协议。例如:int sockfd;sockfd = socket(PF_LOCAL, SOCK_STREAM, 0);绑定创建了套接字后,还必须进行绑定才能使用。不同于网络套接字的绑定,本地套接字的绑定的是struct sock
阅读全文
摘要:在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t;struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */在linux环境下,结构体struct sockaddr_in在/usr/include/netinet/in.h中定义,具体如下:/* Structure
阅读全文
摘要:struct sockaddr {unsigned short sa_family; /* address family, AF_xxx */char sa_data[14]; /* 14 bytes of protocol address */};sa_family是地址家族,一般都是“AF_xxx”的形式。好像通常大多用的是都是AF_INET。sa_data是14字节协议地址。此数据结构用做bind、connect、recvfrom、sendto等函数的参数,指明地址信息。但一般编程中并不直接针对此数据结构操作,而是使用另一个与sockaddr等价的数据结构sockaddr_in(在net
阅读全文
摘要:生产者线程用于往链表里添加节点,数个工作线程从链表取出节点并处理。对于一般的mutex_lock,mutex_unlock方式,如果这一段时间没有工作,那么工作线程将会不停的调用lock,unlock操作。而这样的操作毫无疑义。在这里系统给我们提供了另外一种同步机制,信号灯,Semaphore。信号灯其实就是一个计数器,也是一个整数。每一次调用wait操作将会使semaphore值减一,而如果semaphore值已经为0,则wait操作将会阻塞。每一次调用post操作将会使semaphore值加一。将这些操作用到上面的问题中。工作线程每一次调用wait操作,如果此时链表中没有节点,则工作线程将
阅读全文

浙公网安备 33010602011771号