<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[取而代之的专栏]]></title><description><![CDATA[菜鸟开始写博客]]></description><link>https://blog.youkuaiyun.com/querdaizhi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; querdaizhi]]></copyright><item><title><![CDATA[VC6.0中友元函数无法访问类私有成员的解决办法]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7987741</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7987741</guid><author>querdaizhi</author><pubDate>Mon, 17 Sep 2012 15:05:37 +0800</pubDate><description><![CDATA[举个例子:



?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31]]></description><category></category></item><item><title><![CDATA[linux 设置环境变量]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7964661</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7964661</guid><author>querdaizhi</author><pubDate>Mon, 10 Sep 2012 21:24:06 +0800</pubDate><description><![CDATA[临时的环境变量：主要使用export命令来导入到/etc/environment.
例如，下面的这条命令是将系统的初始的环境变量导进去。
export PATH="/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin"
永久的环境变量就要通过修改vim ~/.bashrc来解决。
在bashrc的最后一行，添加export]]></description><category></category></item><item><title><![CDATA[unix环境高级编程中代码运行问题]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7635596</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7635596</guid><author>querdaizhi</author><pubDate>Tue, 05 Jun 2012 18:49:03 +0800</pubDate><description><![CDATA[很多人怀着崇拜的心情买来这本书之后，就急切想运行书中的代码，但一定会遇到报错。一年多之前我也遇到过这个问题，一直觉得麻烦没有去解决，但是现在书在手中，总要开始练习书中的代码才好。编辑器就用最简单的vim。

首先使用Wget从书的官网下载源码，下载到当前目录的操作是：

wget http://www.apuebook.com/src.tar.gz



然后是解压缩到当前目录：]]></description><category></category></item><item><title><![CDATA[STL中分解字符串函数strtok]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7535745</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7535745</guid><author>querdaizhi</author><pubDate>Fri, 04 May 2012 17:44:34 +0800</pubDate><description><![CDATA[char *strtok(char *s, const char *delim);
分解字符串为一组字符串。s为要分解的字符串，delim为分隔符字符串。
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串，参数delim则为分割字符串，当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0字符。在第一次调用时，strtok()必需给予参数]]></description><category></category></item><item><title><![CDATA[Linux套接字]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7533574</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7533574</guid><author>querdaizhi</author><pubDate>Fri, 04 May 2012 09:40:42 +0800</pubDate><description><![CDATA[套接字是一种通信机制，凭借这种机制，客户/服务器系统的开发工作既可以在本地单机上进行，也可以跨网络进行。
套接字的特性有三个属性确定，它们是：域（domain），类型（type），和协议（protocol）。套接字还用地址作为它的名字。地址的格式随域（又被称为协议族，protocol family）的不同而不同。每个协议族又可以使用一个或多个地址族定义地址格式。
1.套接字的域
域指定套接字]]></description><category></category></item><item><title><![CDATA[linux 消息队列]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7530100</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7530100</guid><author>querdaizhi</author><pubDate>Thu, 03 May 2012 09:09:19 +0800</pubDate><description><![CDATA[消息队列提供了一种在两个不相关的进程之间传递数据的相当简单且有效的方法。与命名管道相比，消息队列的优势在于，它独立于发送和接收进程而存在，这消除了在同步命名管道的打开与关闭的可能产生的一些困难。
Linux系统有两个宏定义MSGMAX和MSGMNB，它们以字节为单位分别定义了一条消息的最大长度和一个队列的最大长度。
#include
int msgctl(int msgid , int cm]]></description><category></category></item><item><title><![CDATA[Linux共享内存]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7527080</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7527080</guid><author>querdaizhi</author><pubDate>Wed, 02 May 2012 10:22:48 +0800</pubDate><description><![CDATA[共享内存是有IPC为进程创建的一个特殊的地址范围，它将出现在该进程的地址的空间中。
共享内存使用的函数类似与信号量的函数，它的定义如下：
#include
void *shmat(int shm_id , const void *shm_addr , int shmflg);
int shmctl(int shm_id ,  int cmd , struct shmid_ds *buf);]]></description><category></category></item><item><title><![CDATA[linux 信号量、共享内存、和消息队列]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7526920</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7526920</guid><author>querdaizhi</author><pubDate>Wed, 02 May 2012 09:40:36 +0800</pubDate><description><![CDATA[Linux的信号量机制
#include
int 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]]></description><category></category></item><item><title><![CDATA[Linux进程间通信：管道（把管道用作标准输入和标准输出）]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7494198</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7494198</guid><author>querdaizhi</author><pubDate>Tue, 24 Apr 2012 16:30:15 +0800</pubDate><description><![CDATA[#include
int dup(int file_descriptor);
int dup2(int file_descriptor_one , int file_descriptor_two);
dup调用的目的是打开一个新的文件描述符，这与open调用有点类似。不同之处是，dup调用创建的新文件描述符与作为它的参数的那个已有文件描述符指向同一个文件（或管道）。dup2它所创建的新文件描述符]]></description><category></category></item><item><title><![CDATA[进程间通信（PIPE调用）]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7490968</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7490968</guid><author>querdaizhi</author><pubDate>Mon, 23 Apr 2012 19:32:10 +0800</pubDate><description><![CDATA[看过了高级的popen调用之后，我们来了解一下底层的pipe函数。popen函数用过启动一个shell来解释请求的命令。而pipe不需要启动shell来解释。

#include
int pipe(int file_descriptor[2]);
pipe函数的参数是一个由两个整数类型的文件描述符组成的数据的指针。该函数是数据中填上两个新的文件描述符后返回0.如果失败则返回-1并设置
er]]></description><category></category></item><item><title><![CDATA[进程间的通信：管道]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7490876</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7490876</guid><author>querdaizhi</author><pubDate>Mon, 23 Apr 2012 19:11:25 +0800</pubDate><description><![CDATA[可能是最简单的两个程序之间传递数据的方法就是使用popen和pclose函数了。
#incldue
FILE *popen(const char *command , const char *open_mode);
int pclose(FILE *stream_to_close);
1.popen函数允许一个程序将另一个程序作为新进程来启动，并可以传递数据给它或者通过它接收数据。comm]]></description><category></category></item><item><title><![CDATA[POSIX线程多线程例子]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7486583</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7486583</guid><author>querdaizhi</author><pubDate>Sun, 22 Apr 2012 14:48:27 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 

#define NUM_THREADS 6

void *thread_function(void *arg);

int main() {
    int res;
    pthread_t a_thread[NUM_THREADS];
    void *thread_result;
    int lots_]]></description><category></category></item><item><title><![CDATA[POSIX线程(4)线程的属性]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7486551</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7486551</guid><author>querdaizhi</author><pubDate>Sun, 22 Apr 2012 14:36:27 +0800</pubDate><description><![CDATA[UNIX 在线程上面还有一个叫线程属性的概念。容许创建线程进程访问或者是改变线程的属性。
线程属性有下面几个方面：
                            作用域(scope）                       决定线程优先级范围，进程内还是系统范围。]]></description><category></category></item><item><title><![CDATA[POSIX线程(3)互斥量同步]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7486544</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7486544</guid><author>querdaizhi</author><pubDate>Sun, 22 Apr 2012 14:31:28 +0800</pubDate><description><![CDATA[#include
int 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]]></description><category></category></item><item><title><![CDATA[posix 线程（2）信号量同步]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7486509</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7486509</guid><author>querdaizhi</author><pubDate>Sun, 22 Apr 2012 14:25:39 +0800</pubDate><description><![CDATA[#include
int sem_init(sem_t *sem , int pshared , unsigned int value);
这个函数初始化有sem指向的信号量对象，设置它的共享选项，并给它一个初始化的整数值。pshared参数控制信号量的类型，如果其值为 0，
就表示这个信号量是当前进程的局部信号量。否则这个信号量就可以在多个线程之间共享。

#include
int se]]></description><category></category></item><item><title><![CDATA[posix线程(1)]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7486480</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7486480</guid><author>querdaizhi</author><pubDate>Sun, 22 Apr 2012 14:15:23 +0800</pubDate><description><![CDATA[当在进程中创建一个新线程时，新的执行线程将拥有自己的栈（因为也拥有自己的局部变量），但与它的创建者共享局部变量
，文件描述符，信号处理函数和当前目录状态。

#include
int pthread_creat(pthread_t *thread , pthread_attr_t *attr , void *(*start_routine)(void *) , void *arg);
这个]]></description><category></category></item><item><title><![CDATA[Linux一个健壮的信号接口]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7484649</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7484649</guid><author>querdaizhi</author><pubDate>Sat, 21 Apr 2012 17:25:29 +0800</pubDate><description><![CDATA[Linux提供了一个更见健壮的信号接口:sigaction。
#include
int sigaction( int sig, const struct sigaction *act , struct sigaction *ocat);
sigaction结构定义在文件signal.h中，它的作用是定义在接收到参数sig指定的信号后应该采用的行动。该结构至少应该包含一下

以下几个成员]]></description><category></category></item><item><title><![CDATA[Linux 信号]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7484604</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7484604</guid><author>querdaizhi</author><pubDate>Sat, 21 Apr 2012 16:55:10 +0800</pubDate><description><![CDATA[信号是unix和Linux系统相应某些条件而产生的一个事件。接收到信号的进程会相应的采取一些行动。

信号　　　值　　处理动作　发出信号的原因
----------------------------------------------------------------------
SIGHUP     1　　　 　A　　终端挂起或者控制进程终止
SIGINT     2　　　 　A]]></description><category></category></item><item><title><![CDATA[Linux 进程与信号]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7484564</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7484564</guid><author>querdaizhi</author><pubDate>Sat, 21 Apr 2012 16:28:46 +0800</pubDate><description><![CDATA[Linux和Unix一样，有一个虚拟内存系统，能够把程序代码和数据以内存页面的形式放到硬盘的一个区域中，所以
Linux可以管理的进程比物理内存所能容纳的要多得多。
进程表
查看进程
ps -ef
TTY 一列显示了进程是从那个终端启动的。TIME一列是进程到目前为止所占用的CPU时间。
CMD一列显示启动进程使用的命令。STAT一列用来表明进程的当前代码。


STAT代码解释]]></description><category></category></item><item><title><![CDATA[使用c语言访问mysql]]></title><link>https://blog.youkuaiyun.com/querdaizhi/article/details/7481873</link><guid>https://blog.youkuaiyun.com/querdaizhi/article/details/7481873</guid><author>querdaizhi</author><pubDate>Fri, 20 Apr 2012 16:16:16 +0800</pubDate><description><![CDATA[用c语言连接MYSQL数据库包含两个步骤：
1.初始化一个链接句柄结构；
2.实际进行连接
首先，使用mysql_init来初始化连接句柄：
#include
MYSQL *mysql_init(MYSQL *);
通常你传递NULL给这个例程，它会返回一个指向新分配的连接句柄结构的指针。如果你传递一个已有的结构，它将被重新初始化，
这个例程在出错是返回NULL。
目前为止，你知识]]></description><category></category></item></channel></rss>