此功能在嵌入式开发中常用来通知用户。 比如监控异常了,发邮件通知。#include #include #include #include #include #include #include #include #include #include #define SOCKET_ERROR -1#define IPSTR "220.181.12.12"#define PRINT(x) printf("%s\n",(x)) int sockfd;int ret;char *send_data;char *recv_data;char From[128];cha Read More
posted @ 2014-02-28 17:39 Trace... Views(1651) Comments(0) Diggs(0) Edit
telnet收发邮件telnet收邮件:所有响应+OK (ok) or -ERR (no) 1.连接→telnet pop.163.com 1102.用户名→user ****3.密码→pass ****4.验证ok后,终端会显示如下信息:+OK 60 message(s) [72208371 byte(s)]数字60表示有60封邮件,72208371表示这60封邮件总的字节数(即72208371B) 这时可使用的命令如下: 1.stat命令 格式:stat 无需参数stat命令,查看统计,执行后,POP3服务器会响应一个正确应答,它以“+OK”开头,接着是两个数字,第一个是邮件数目,第二个是 Read More
posted @ 2014-02-28 14:43 Trace... Views(242) Comments(0) Diggs(0) Edit
为了能够有效的控制多个进程之间的沟通过程,保证沟通过程的有序和和谐,OS必须提供一定的同步机制保证进程之间不会自说自话而是有效的协同工作。比如在共享内存的通信方式中,两个或者多个进程都要对共享的内存进行数据写入,那么怎么才能保证一个进程在写入的过程中不被其它的进程打断,保证数据的完整性呢?又怎么保证读取进程在读取数据的过程中数据不会变动,保证读取出的数据是完整有效的呢? 常用的同步方式有: 互斥锁、条件变量、读写锁、记录锁(文件锁)和信号灯。。1、互斥锁顾名思义,锁是用来锁住某种东西的,锁住之后只有有钥匙的人才能对锁住的东西拥有控制权(把锁砸了,把东西偷走的小偷不在我们的讨论范围了)。所谓互斥 Read More
posted @ 2014-02-18 19:49 Trace... Views(245) Comments(0) Diggs(0) Edit
mutex是一个互斥锁对象,互斥锁是为了防止多线程同时修改某一公共资源,我在下面的程序里把它“锁”在了一个叫buffer[10]的缓冲区 上,模型是2个Reader和2个Writer,Reader要等到叫buffer的书架上有书的时候才可以read,而Writer也必须在书架没有放 满的情况下才可以把新写的书放到书架上。我的程序里书架的大小是1,当然也可以设置书架的大小,不过实现过程大同小异。就不多说了。来看程序:#i nclude #i nclude void reader_function(void);void writer_function(void);char buffer[10]={ Read More
posted @ 2014-02-18 19:31 Trace... Views(300) Comments(0) Diggs(0) Edit
wait()与waitpid()用于等待进程结束#include pid_t wait(int *statloc); //参数获取终止状态pid_t waitpid(pid_t pid, int *statloc, int options); //pid==-1时,与wait()等效。 当一个进程正常或异常结束时,内核就向其父进程发送SIGCHLD信号。 如果所有子进程都还在运行,则阻塞。 如果一个子进程终止,正等待父进程获取其终止状态,则取得该子进程的终止状态立即返回。 如果没有子进程,则立即出错返回。 区别: 在一个子进程终止前,wait使其调用者阻塞,而wia... Read More
posted @ 2014-02-18 19:13 Trace... Views(1210) Comments(0) Diggs(0) Edit
1、信号量(Semaphores) System V的信号量集表示的是一个或多个信号量的集合。内核为每个信号量集维护一个semid_ds数据结构,而信号量集中的每个信号量使用一个无名结构体表示,这个结构体至少包含以下成员: struct{ unsigned short semval;//信号量值,总是>=0 pid_t sempid; //上一次操作的pid … }; #include #include #include (1)创建或访问信号量 * int semget(key_t key,int ns... Read More
posted @ 2014-02-18 18:45 Trace... Views(241) Comments(0) Diggs(0) Edit
System V IPC指的是AT&T在System V.2发行版中引入的三种进程间通信工具:(1)信号量,用来管理对共享资源的访问 (2)共享内存,用来高效地实现进程间的数据共享 (3)消息队列,用来实现进程间数据的传递。我们把这三种工具统称为System V IPC的对象,每个对象都具有一个唯一的IPC标识符(identifier)。要保证不同的进程能够获取同一个IPC对象,必须提供一个IPC关键字(IPC key),内核负责把IPC关键字转换成IPC标识符。 System V IPC具有相似的语法,一般操作如下: (1)选择IPC关键字,可以使用如下三种方式: ... Read More
posted @ 2014-02-17 13:16 Trace... Views(468) Comments(0) Diggs(0) Edit
http://blog.csdn.net/youkuxiaobin/article/details/7544347 在早期的UNIX中信号是不可靠的,不可靠在这里指的是:信号可能丢失,一个信号发生了,但进程却可能一直不知道这一点。现在Linux 在SIGRTMIN实时信号之前的都叫不可靠信号,这里的不可靠主要是不支持信号队列,就是当多个信号发生在进程中的时候(收到信号的速度超过进程处理的速度的时候),这些没来的及处理的信号就会被丢掉,仅仅留下一个信号。 可靠信号是多个信号发送到进程的时候(收到信号的速度超过进程处理信号的速度的时候),这些没来的及处理的信号就会排入进程的队列。等进程有机会来.. Read More
posted @ 2014-02-12 09:53 Trace... Views(443) Comments(0) Diggs(0) Edit
简介:Video4linux2(简称V4L2),是linux中关于视频设备的内核驱动。在Linux中,视频设备是设备文件,可以像访问普通文件一样对其进行读写。摄像头文件一般放在在/dev/video0下。流程:1、打开视频设备。 int g_videofd = open(“/dev/video0”, O_RDWR, 0); //选项可为 O_RDWR| O_NONBLOCK,非阻塞,即无数据依然返回。2、取得设备的capability。(重要)//l inux-2.6.30/include/linux/videodev2.h定义 1 int VIPP_VIDEO_Queryinfo() ... Read More
posted @ 2014-01-17 16:46 Trace... Views(385) Comments(0) Diggs(0) Edit
ncurses库需要包含头文件ncurses.h,链接的时候需要使用-lncurses选项initscr() // 初始化屏幕raw(); // 设置模式为raw模式,所有的输入不需要输入回车就可以传递给程序keypad();//允许用户终端的键盘,允许getch()函数获取功能键noecho();//不回显用户输入的内容cbreak(); //控制字符会被发送给程序处理start_color();// 开启颜色init_pair(1, COLOR_WHITE, COLOR_BLACK); //初始化颜色对,比如说颜色方案1,前景色是的色,背景色是黑色//当我们有一个字符串要输出,用颜色方案1 Read More
posted @ 2014-01-12 17:09 Trace... Views(3008) Comments(0) Diggs(0) Edit