随笔分类 - Linux
摘要:最近在Linux下用到数据库sqlite3,于是开始了该方面的学习。 0. 引言 我们这篇文章主要讲述了如何在C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理, 包括创建数据库、创建表格、插入数据、查询数据、删除数据等。 1. 说明 这里我们假设你已经编译好了sqlite的库文件
阅读全文
摘要:下面一个例子简单的描述了xinet编程的步骤:1. 我写了一个小程序:/***** tcpgoodie.c**/#include <stdio.h>#include <stdlib.h>#include <unistd.h>main(void){printf("Welcome to goodie service!");}2. 编译gcc -o tcpgoodie tcpgoodie.c3. 修改了 /etc/services我增加了一行:tcpgoodie20001/tcp#目的是分配20001端口给tcpgoodie,这个端口和别的端口
阅读全文
摘要:摘自http://hi.baidu.com/xu_zhisheng/blog/item/390c090e09ecda236059f304.html这里面的三个函数openlog, syslog, closelog是一套系统日志写入接口。另外那个vsyslog和syslog功能一样,只是参数格式不同。原理:通常,syslog守护进程读取三种格式的记录消息。此守护进程在启动时读一个配置文件。一般来说,其文件名为/etc/syslog.conf(注释:ifyou want to redirectlogto other place,you need to change this),该文件决定了不同种类
阅读全文
摘要:守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意思)。 一般情况下守护进程可以通过以下几种方式产生:1,在系统启动的时候由启动脚本启动,这些启动脚本通常放在/etc/rc.d目录下2,利用inetd超级系统服务器启动,如telnet等3,由cro
阅读全文
摘要:acpidacpid(Advanced Configuration and Power Interface)是为替代传统的APM电源管理标准而推出的新型电源管理标准。通常笔记本电脑需要启动电源进行管理。alsasoundAlsa声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。amd自动安装NFS守护进程。anacron一个自动化运行任务守护进程。Red Hat Linux 随带四
阅读全文
摘要:Daemon程序简介 Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。 比如,我们的网络服务程序,可以在完成创建套接口,绑定套接口,设置套接口为监听模式后,变成守护进程进入后台执行而不占用控制终端,这是网络服务程序的常用模式。UNIX下的网络服务程序,如Web Server,FTP,Telnet一般都是由守护进程(Daemon)来实现的。守护进程不占用终端,在后台运行。UNIX的守.
阅读全文
摘要:#include <stdio.h>#include <stdlib.h>#include <syslog.h>#include <fcntl.h>int main(void){ int fd; char filename[] = "/root/wenhao"; /* file is not exist */ if ((fd = open(filename, O_RDONLY)) == -1) { syslog(LOG_ERR | LOG_LOCAL0, "open %s: %m\n", filename)
阅读全文
摘要:Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。Linux的man手册共有以下几个章节:代號代表內容1使用者在shell中可以操作的指令或可执行档2系統核心可呼叫的函数与工具等3一些常用的函数(function)与函数库(library),大部分是C的函数库(libc)4装置档案的说明,通常在/dev下的档案5设定档或者是某些档案的格式6游戏(games)7惯例与协定等,例如Linux档案系统、网络协定、ASCII code等等的說明8系統管理員可用的管理指令9跟kernel有关的文件如:man 5 data1 Executable progr
阅读全文
摘要:I/O 复用的能力: 如果一个或多个 I/O 条件满足(例如,输入已准备好被读,或者描述字可以承接更多的输出)时,我们就被通知到。I/O 复用由函数 select 和 poll 支持。I/O 复用典型的应用场合:a. 当客户处理多个描述字(一般是交互式输入和网络套接口),必须使用 I/O 复用;b. 一个客户同时处理多个套接口[较少出现];c. TCP 服务器既要处理监听套接口,又要处理已接套接口;d. 服务器既要处理 TCP,又要处理 UDP;e. 服务器要处理多个服务或多个协议[例如inetd守护进程]。Unix 下五个 I/O 模型:1. 阻塞的 I/O 模型 最流行的 I/O 模型,缺
阅读全文
摘要:很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大多数时候,我发现问这些问题的朋友都有两个特点:1)对Unix有畏难心理,对其没有信心;2)喜欢用拿Windows来和Unix做比较。这两种特点就像两个“心理暗示”,暗示着自己Unix很不好学,暗示着Unix很糟糕,不如Windows好。于是,自己也就被自己的这种长期的“暗示” 所催眠了。因为,从一开始就有畏难情绪,所以也就觉得Unix不好,觉得非常很吃力,最后还会导致对Unix的厌恶和反感的情绪。所以,为了纠正上述朋友 们的“心理暗示”。我想写下这篇文章,想告
阅读全文
摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://ixdba.blog.51cto.com/2895551/569329一、 选择适合自己的linux发行版谈到linux的发行版本,太多了,可能谁也不能给出一个准确的数字,但是有一点是可以肯定的,linux正在变得越来越流行, 面对这么多的Linux 发行版,打算从其他系统转到linux系统来的初学者可能会感到困惑,即便是忠实的 Linux 用户也没有时间和精力去挨个尝试,因此初学者在学习linux的之前,需要有一个明确的方向,选择一个适合自己的系统开始学习linux至关重要!下面
阅读全文
摘要:信号量与线程互斥锁的区别“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这 个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不一定是锁定某一个资源,而是流程上的概念,比如:有A,B两个线程,B线程要等A线程完成某一任务以后再进行自己下面的步骤,这个任务 并不一定是锁定某一资源,还可以是进行一些计算或
阅读全文
摘要:1.存储目录中的文件信息(文件名、扩展名等等)#include <dirent.h>struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this d_name 文件名长 */ unsigned char d_type; /* the type of d_name 文件类型 */ char d_name [NAME_MAX+1]; /* file name
阅读全文
摘要:§3.8扫描目录Linux系统上一个常见问题就是对目录进行扫描,也就是确定一个特定目录下存放的文件。在shell程序设计中,这很容易做到——只需让shell做一次表达式的通配符扩展。过去,UNIX操作系统的各种变体都允许用户通过编程访问底层文件系统结构。我们仍然可以把目录当作一个普通文件那样打开,并直接读取目录数据项,但不同的文件系统结构及其实现方法已经使这种办法没什么可移植性了。现在,一整套标准的库函数已经被开发出来,使得目录的扫描工作变得简单多了。与目录操作有关的函数在dirent.h头文件中声明。它们把一个名为DIR的结构作为目录操作的基础。被称为“目录流”的指向这个结构的指针
阅读全文
摘要:Linux stat函数讲解表头文件: #include <sys/stat.h> #include <unistd.h>定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于errno错误代码: ENOENT 参数file_name指定的文件不存在 ENOTDIR 路径中的目录存在但却非真正的目录 ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接 EFAUL
阅读全文
摘要:首先要安装这个库,其次,要把需要的协议加上,./configure --enable-smtp --enable-pop3makemake install使用curl --version 查看使用版本是否一样smtp代码实例: ################################################################################include <stdio.h> #include <curl/curl.h>size_t read_data(void *ptr, size_t size, size_t nmemb,
阅读全文
摘要:设置成UTF-8,可以解决中文乱码问题。设置字体,默认是10pt,可以修改成12px ,仿宋GB2312。 修改背景色、前景色让眼晴看着舒服些。Load某个配制名称,或输入新名称,然后保存,让之前的设置生效保存1、WindowsXp-》“运行”输入:regedit 打开注册表 2、 HKEY_CURRENT_USER -》Software -》 SimonTatham 3、右击“ SimonTatham ”,在弹出菜单中选择”导出“,保存成”puttyConf.reg”即完成备份。 4、还原Putty设置。直接双击”puttyConf.reg”导入注册表信息即完成还原putty设置转自:htt
阅读全文
摘要:read函数只是一个通用的读文件设备的接口。是否阻塞需要由设备的属性和设定所决定。一般来说,读字符终端、网络的socket描述字,管道文件等,这些文件的缺省read都是阻塞的方式。如果是读磁盘上的文件,一般不会是阻塞方式的。但使用锁和fcntl设置取消文件O_NOBLOCK状态,也会产生阻塞的read效果。怎么样以非阻塞的方式从管道中读取数据?因为我用read函数时,如果管道没有数据就会阻塞住??? 我的代码是: char chBuff[32]; read(file_pipe[0], chBuff, 16); 如果管道没有数据我这个函数就永远不返回,请问有没有其它的方式,如果管道有数据就读取,
阅读全文
摘要:在windows下操作linux命令的小工具,非常好。偶然发现,储存资料备用。PuTTY 是一个跨平台的远程登录工具,包含了一组程序,包括:PuTTY (Telnet 和 SSH 客户端)PSCP (SCP 客户端, 命令行下通过 SSH 拷贝文件,类似于 Unix/Linux 下的 scp 命令)PSFTP (SFTP 的命令行客户端,类似于 FTP 的文件传输,只不过使用的是 SSH 的 22 端口,而非 FTP 的 21 端口,类似于 Unix/Linux 下的 sftp 命令)PuTTYtel (仅仅是一个 Telnet 客户端)Plink (命令行工具,执行远程服务器上的命令)Pag
阅读全文
摘要:$ kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTA
阅读全文

浙公网安备 33010602011771号