LINUX
文章平均质量分 72
querdaizhi
这个作者很懒,什么都没留下…
展开
-
Ubuntu10.04 “网络已禁用”的问题(转载)
今天,virtualbox中的2台虚拟电脑,都是Ubuntu 10.04的系统,都没有正常关机,结果重启后,有线和无线网络的都不可以使用。开始的时候,以为是系统更新不兼容,有问题……然后,借用别人的电脑,在网络上搜索,在中文里面,搜索到类似的问题,但是在我的电脑上不能够使转载 2011-08-31 22:13:32 · 1976 阅读 · 0 评论 -
linux 消息队列
消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法。与命名管道相比,消息队列的优势在于,它独立于发送和接收进程而存在,这消除了在同步命名管道的打开与关闭的可能产生的一些困难。Linux系统有两个宏定义MSGMAX和MSGMNB,它们以字节为单位分别定义了一条消息的最大长度和一个队列的最大长度。#includeint msgctl(int msgid , int cm原创 2012-05-03 09:09:19 · 6035 阅读 · 0 评论 -
使用c语言访问mysql
用c语言连接MYSQL数据库包含两个步骤:1.初始化一个链接句柄结构;2.实际进行连接首先,使用mysql_init来初始化连接句柄:#includeMYSQL *mysql_init(MYSQL *);通常你传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针。如果你传递一个已有的结构,它将被重新初始化,这个例程在出错是返回NULL。目前为止,你知识原创 2012-04-20 16:16:16 · 5568 阅读 · 0 评论 -
linux termios结构
termios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小组函数调用,你就可以对终端接口进行控制。可以被调整来影响终端的值按照不同的模式被分为如下几组:1.输入模式2.输出模式3.控制模式4.本地模式5.特殊控制模式最小的termios结构的典型定义如下:struct term原创 2012-04-08 02:09:13 · 32012 阅读 · 4 评论 -
Linux套接字
套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。套接字的特性有三个属性确定,它们是:域(domain),类型(type),和协议(protocol)。套接字还用地址作为它的名字。地址的格式随域(又被称为协议族,protocol family)的不同而不同。每个协议族又可以使用一个或多个地址族定义地址格式。1.套接字的域域指定套接字原创 2012-05-04 09:40:42 · 13092 阅读 · 0 评论 -
LINUX文件锁定
linux下文件锁定有两种:一种是以原子操作方式创建锁文件;另一种是允许锁定文件的一部分,从而独享对这一部分内容的访问。 1、锁文件 许多应用程序只需要能够针对某个资源创建一个锁文件,然后其他程序通过检查这个文件来判断它们是否被允许访问这个资源。创建锁文件使用fcntl.h头文件定义的open系统调用,并带上O_CREAT和O_EXCL标志。这样就以原子操作完成两项工作原创 2012-04-19 16:46:10 · 7035 阅读 · 2 评论 -
posix 线程(2)信号量同步
#includeint sem_init(sem_t *sem , int pshared , unsigned int value);这个函数初始化有sem指向的信号量对象,设置它的共享选项,并给它一个初始化的整数值。pshared参数控制信号量的类型,如果其值为 0,就表示这个信号量是当前进程的局部信号量。否则这个信号量就可以在多个线程之间共享。#includeint se原创 2012-04-22 14:25:39 · 973 阅读 · 0 评论 -
POSIX线程(3)互斥量同步
#includeint pthread_mutex_init(pthread_mutex_t *mutex , const pthread_mutexattr_t *mutexattr);int pthread_mutex_lock(pthread_mutex_t *mutex);int pthread_mutex_unlock(pthread_mutex_t *mutex);int pt原创 2012-04-22 14:31:28 · 588 阅读 · 0 评论 -
POSIX线程(4)线程的属性
UNIX 在线程上面还有一个叫线程属性的概念。容许创建线程进程访问或者是改变线程的属性。线程属性有下面几个方面: 作用域(scope) 决定线程优先级范围,进程内还是系统范围。原创 2012-04-22 14:36:27 · 748 阅读 · 0 评论 -
posix线程(1)
当在进程中创建一个新线程时,新的执行线程将拥有自己的栈(因为也拥有自己的局部变量),但与它的创建者共享局部变量,文件描述符,信号处理函数和当前目录状态。#includeint pthread_creat(pthread_t *thread , pthread_attr_t *attr , void *(*start_routine)(void *) , void *arg);这个原创 2012-04-22 14:15:23 · 738 阅读 · 0 评论 -
Linux 进程与信号
Linux和Unix一样,有一个虚拟内存系统,能够把程序代码和数据以内存页面的形式放到硬盘的一个区域中,所以Linux可以管理的进程比物理内存所能容纳的要多得多。进程表查看进程ps -efTTY 一列显示了进程是从那个终端启动的。TIME一列是进程到目前为止所占用的CPU时间。CMD一列显示启动进程使用的命令。STAT一列用来表明进程的当前代码。STAT代码解释原创 2012-04-21 16:28:46 · 818 阅读 · 0 评论 -
Linux一个健壮的信号接口
Linux提供了一个更见健壮的信号接口:sigaction。#includeint sigaction( int sig, const struct sigaction *act , struct sigaction *ocat);sigaction结构定义在文件signal.h中,它的作用是定义在接收到参数sig指定的信号后应该采用的行动。该结构至少应该包含一下以下几个成员原创 2012-04-21 17:25:29 · 828 阅读 · 0 评论 -
POSIX线程多线程例子
#include #include #include #include #define NUM_THREADS 6void *thread_function(void *arg);int main() { int res; pthread_t a_thread[NUM_THREADS]; void *thread_result; int lots_原创 2012-04-22 14:48:27 · 1109 阅读 · 0 评论 -
Linux 信号
信号是unix和Linux系统相应某些条件而产生的一个事件。接收到信号的进程会相应的采取一些行动。信号 值 处理动作 发出信号的原因----------------------------------------------------------------------SIGHUP 1 A 终端挂起或者控制进程终止SIGINT 2 A原创 2012-04-21 16:55:10 · 645 阅读 · 0 评论 -
进程间的通信:管道
可能是最简单的两个程序之间传递数据的方法就是使用popen和pclose函数了。#incldueFILE *popen(const char *command , const char *open_mode);int pclose(FILE *stream_to_close);1.popen函数允许一个程序将另一个程序作为新进程来启动,并可以传递数据给它或者通过它接收数据。comm原创 2012-04-23 19:11:25 · 1017 阅读 · 0 评论 -
unix环境高级编程中代码运行问题
很多人怀着崇拜的心情买来这本书之后,就急切想运行书中的代码,但一定会遇到报错。一年多之前我也遇到过这个问题,一直觉得麻烦没有去解决,但是现在书在手中,总要开始练习书中的代码才好。编辑器就用最简单的vim。首先使用Wget从书的官网下载源码,下载到当前目录的操作是:wget http://www.apuebook.com/src.tar.gz然后是解压缩到当前目录:原创 2012-06-05 18:49:03 · 1980 阅读 · 2 评论 -
linux 设置环境变量
临时的环境变量:主要使用export命令来导入到/etc/environment.例如,下面的这条命令是将系统的初始的环境变量导进去。export PATH="/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin"永久的环境变量就要通过修改vim ~/.bashrc来解决。在bashrc的最后一行,添加export原创 2012-09-10 21:24:06 · 708 阅读 · 0 评论 -
linux 信号量、共享内存、和消息队列
Linux的信号量机制#includeint semctl(int sem_id , int sem_num , int command , ...);int semget(key_t key , int num_set , int sem_flags);int semop(int sem_id struct sembuf *sem_ops , size_t num_sem_ops原创 2012-05-02 09:40:36 · 2486 阅读 · 0 评论 -
Linux共享内存
共享内存是有IPC为进程创建的一个特殊的地址范围,它将出现在该进程的地址的空间中。共享内存使用的函数类似与信号量的函数,它的定义如下:#includevoid *shmat(int shm_id , const void *shm_addr , int shmflg);int shmctl(int shm_id , int cmd , struct shmid_ds *buf);原创 2012-05-02 10:22:48 · 1525 阅读 · 0 评论 -
Linux进程间通信:管道(把管道用作标准输入和标准输出)
#includeint dup(int file_descriptor);int dup2(int file_descriptor_one , int file_descriptor_two);dup调用的目的是打开一个新的文件描述符,这与open调用有点类似。不同之处是,dup调用创建的新文件描述符与作为它的参数的那个已有文件描述符指向同一个文件(或管道)。dup2它所创建的新文件描述符原创 2012-04-24 16:30:15 · 5524 阅读 · 0 评论 -
Ubuntu Linux笔记本屏幕背光亮度调节
网上有很多在Ubuntu Linux下调节笔记本屏幕亮度的方法,有的调的是亮度但不是背光亮度,有的调背光亮度的方法在我的电脑上不好使……找了半天发现这个方法,适用范围应该比较广(起码在我这里好用)。首先,进入终端,输入lspci命令,列出各种设备的地址www.linxid转载 2011-08-24 15:33:17 · 4418 阅读 · 1 评论 -
Linux 下压缩与解压.zip和.rar
对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:1)对于.ziplinux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,可用命令zip -help和unzip -help查看,这转载 2011-08-28 21:50:09 · 30143 阅读 · 0 评论 -
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我晕了个去,一直登录不了mysql,刚安装好mysql,root账户没有密码的,按理说是zq@ubuntu:/$ mysql -u root登陆的。但是一直出现ERROR 1045 (28000): Access denied for user 'root'@'loca原创 2011-08-29 17:56:46 · 1012 阅读 · 0 评论 -
centos 上搭建VSftp
1.下载好vsftp2.makemake installcp vsftp解压目录/vsftpd.conf /etc/允许本地用户登录FTP需拷贝vsftpd.pam文件cp RedHat/vsftpd.pam /etc/pam.d/ftp 3.修改vsftpd.conf接受匿名用户 :anonymous_enable=YES 接受原创 2012-03-04 22:32:19 · 964 阅读 · 0 评论 -
samba服务器的安装
yum –y install samba将系统用户zengqu加入到samba用户数据库中。 smbpasswd –a zengqu输入密码:123456原创 2012-03-04 22:31:16 · 472 阅读 · 0 评论 -
linux关于用户信息的编程
Linux对每一个用户都提供了一个uid,我们从uid开始来说说用户信息。uid有自己的类型,uid_t,它定义在头文件sys/types.h中。它通常是一个小整数。有些UID是系统预定义的,其他的则是系统管理员在添加心用户时创建的,一般情况下,uid都大于100。#include#includeuid_t getuid(void);char *getlogin(void)原创 2012-03-30 14:33:44 · 858 阅读 · 0 评论 -
linux环境有关编程(2)
C语言通过putenv和getenv函数来访问环境变量。#includechar *getenv(const char *name);int putenv(const char *string);环境是由一组格式为“名字=值”的字符串组成。getenv函数以给定的名字搜索环境中的一个字符串,并返回与该名字相关的值。如果请求不存在,就返回NULL。由于getenv返回的字符串原创 2012-03-30 11:34:55 · 517 阅读 · 0 评论 -
Linux 时间和日期相关编程
所有的unix系统都使用同一个时间和日期的起点:格林尼治时间(GMT)1970年1月1日午夜0点时间通过一个预定义的类型time_t来处理,在linux系统中,它是一个长整型。包含在time.h中。#includetime_t time(time_t *tloc);通过time函数可以得到底层的时间值,它返回的是从纪元开始至今的秒数。如果tloc不是一个空指针,time函数还会把返原创 2012-03-30 11:59:25 · 836 阅读 · 0 评论 -
linux临时文件
很多情况下,程序会利用一些文件形式的临时存储手段。用tmpname函数可以生成一个唯一的文件名。#includechar *tmpname( char *s)tmpname函数返回一个不与任何已存在的文件名同名的有效文件名,如果字符串s不为空,文件名也会写入它。对tmpname的后续调用会覆盖存放返回值的静态存储区。如果需要立刻使用临时文件,你可以用tmpfile函数在给原创 2012-03-30 14:09:00 · 5162 阅读 · 0 评论 -
linux环境有关编程(1)
getopt(分析命令行参数) #include int getopt(int argc,char * const argv[ ],const char * optstring); extern char *optarg; extern int optind, opterr, optopt; 函数说明 getopt()用来分原创 2012-03-30 11:12:37 · 477 阅读 · 0 评论 -
linux环境有关编程(3)
environ 变量#includeextern char **environ;#include #include extern char **environ;int main(){ char **env = environ; while(*env) { printf("%s\n",*env); env++; }原创 2012-03-30 11:38:06 · 491 阅读 · 0 评论 -
linux 底层文件访问(库函数)
write系统调用#include#includeint main(){ if( (write(1,"here\n",6) !=6)) { write(2,"WRONG",5); } exit(0);}read系统调用#include#includeint原创 2012-03-17 21:36:26 · 1086 阅读 · 0 评论 -
centos 上搭建apache+php+mysql
上个学期选修的LINUX,因为上个学期时间比较紧张,所以没有时间整理,现在整理好,留着以后备用。1.首先需要下载好apache libxml2 php mysql四个文件。2.安装Apachetar –zxvf XXXXX (XXXX为apache的安装包的名称)./configure--enable-somakemake install原创 2012-03-04 22:29:36 · 481 阅读 · 0 评论 -
LINUX终端编程
如果想知道标准输出是否被重定向了,只需要检查底层的文件描述符是否关联到了一个终端即可。系统调用isatty就是用来完成这个任务的。你只需要将有效的文件描述符传递给它,它就能判断是否连接到了一个终端。#include #include #include char *menu[] = { "a - add new record", "d - delete record"原创 2012-04-08 01:57:34 · 4061 阅读 · 1 评论 -
C标准I/O库
在这个帖子中,我们将要介绍I/O库中的下列库函数。fopen、fclosefread、fwritefflush-fseek-fgetc 、getc 、getcharfputc 、putc 、putcharfgets 、getsprintf 、fprintf 、sprintfscanf 、fscanf 、sscanf首先是fopen函数。fopen函数的函数原型如下:#原创 2012-03-21 15:08:47 · 845 阅读 · 1 评论 -
进程间通信(PIPE调用)
看过了高级的popen调用之后,我们来了解一下底层的pipe函数。popen函数用过启动一个shell来解释请求的命令。而pipe不需要启动shell来解释。#includeint pipe(int file_descriptor[2]);pipe函数的参数是一个由两个整数类型的文件描述符组成的数据的指针。该函数是数据中填上两个新的文件描述符后返回0.如果失败则返回-1并设置er原创 2012-04-23 19:32:10 · 3890 阅读 · 0 评论 -
linux dbm数据库
大多数主流的Linux发行版都会默认安装gdbm,但在一些发行版中,你可能需要使用软件包管理器来安装相应的开发库。例如,在ubuntu中,你可能需要使用Synaptic软件包管理器来安装libgdbm-dev软件包,因为它一般不会被默认安装。dbm的数据块datum是一个用typedef语句定义的类型。它至少包含下面两个成员:void *dptr;size_t dsize;原创 2012-04-20 14:47:50 · 6242 阅读 · 0 评论