行云

行至水穷处,坐看云起时。

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

06 2012 档案

摘要:1 建立管道int pipe(int filedes[2]);pipe()会建立管道,并将文件描述符由参filedes数组返回filedes[0]为管道里的读取端,filedes[1]则为管道的写入端。下面的程序建立了两个管道,分别绑定到子进程父进程标准输入输出:View Code #include <unistd.h>#include <stdio.h>int main(){ int fdins[2], fdouts[2]; pid_t pid; char buff[20]={0}; pipe(fdins); pipe(fdouts); pid=f... 阅读全文
posted @ 2012-06-18 13:53 windflying 阅读(326) 评论(0) 推荐(0)

摘要:信号是一种软件中断,程序收到信号时,就会调用相应的处理函数(如果有注册)。void (*signal(int signum,void(* handler)(int)))(int); -- 设置信号处理方式信号处理函数原型void foo(int arg);系统定义的信号有:/* Signals. */#define SIGHUP1/* Hangup (POSIX). */#define SIGINT2/* Interrupt (ANSI). */#define SIGQUIT3/* Quit (POSIX). */#define SIGILL4/* Illegal instruction (. 阅读全文
posted @ 2012-06-17 10:09 windflying 阅读(763) 评论(0) 推荐(0)

摘要:守护进程是脱离终端并在后台运行的进程。守护进程脱离终端是为了避免进程在执行过程中的信息在任何终端上显示,并且进程也不会被任何终端所产生的中断信息打扰。守护进程一般生存周期都很长。一般都是默默的在后台做一些事情,用户不会直接感受到它的存在。创建守护进程的步骤1 与终端脱离创建子进程,父进程退出。2 在子进程中创建新会话意义在于:让守护进程独立让进程摆脱原会话的控制让进程摆脱原进程组的控制让进程摆脱原控制终端的控制那么,在创建守护进程时为什么要调用setsid函数呢?由于创建守护进程的第一步调用了fork函数来创建子进程,再将父进程退出。由于在调用了fork函数时,子进程全盘拷贝了父进程的会话期、 阅读全文
posted @ 2012-06-17 08:49 windflying 阅读(423) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>当执行程序时,main函数时如何被调用的?C程序总是从main函数开始执行。当内核在启动C程序时,在调用main之前先调用一个特殊的启动例程。可执行程序将次启动例程指定为程序的起始地址 -- 这是由连接编辑程序设置的,而连接编辑程序则由C编译程序调用。启动例程从内核取得命令行参数和环境变量,然后为调用main函数做好安排。进程的终止1 正常终止 a) 从main返回 b)调用exit c)调用_exit exit先执行一些清理再进入内核。2 异常终止 a) 调用abort b)由一个信号终止在程序终止前可以调用其它函数,这可以通过int atexit 阅读全文
posted @ 2012-06-14 20:04 windflying 阅读(396) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>以前经常遇到两种I/O操作一类是f打头的fopen, fread, fwrite一类是没有f打头的open, read, fwrite原来一个是UNIX I/O(在类Unix系统上实现),另一类是标准I/O(在很多系统上都有实现,包括windows)使用标准I/O的好处因为在出UNIX的很多操作系统(包括Windows, linux)上都实现了此库,所有有利于软件的移植。与UnixI/O的主要区别UNIX I/O的函数都是针对文件描述符的,而标准I/O的操作都是围绕流进行的。所为的流就是一个FILE *标准I/O提供了缓存--为了尽量减少write, 阅读全文
posted @ 2012-06-13 13:54 windflying 阅读(1020) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>文件的相关信息文件有哪些相关信息呢?用户关心的:文件类型、文件名、文件大小、文件目录、文件所有者、文件访问修改日期。这些信息保存在struct stat结构中(sys/stat.h)系统关心的:文件状态、文件的存储信息。系统相关的信息大部分在inode, vnode, 文件表中。获取stat结构的API: int stat(const char * file_name,struct stat *buf);使用stat函数最多的可能是 ls -l命令int lstat (const char * file_name.struct stat * buf); 阅读全文
posted @ 2012-06-13 08:35 windflying 阅读(1880) 评论(0) 推荐(0)

摘要:<Uinx 环境高级编程笔记>1 常用的I/O打开文件int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);返回值:文件描述符,一个整数。头文件:#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h>第一个参数: 欲打开的文件路径flags: 访问模式,O_RDONLY, O_WRONLY, O_RDWR, O_CREAT,O_EXCL( 阅读全文
posted @ 2012-06-11 18:54 windflying 阅读(489) 评论(0) 推荐(0)

摘要:用于测试排序算法的正确性和性能测试函数:View Code /* 分别测试 记录有序、反序、随机、所有元素相同的情况*/typedef void (*SortFun)(int *, int *);SortFun pFun;void OrderTest( int n){ clock_t start; float time_used; int *p = new int[n]; pFun = HeapSort; //ascending order int i=0; int flg; while (i<n) p[i] = i++... 阅读全文
posted @ 2012-06-07 21:29 windflying 阅读(429) 评论(0) 推荐(0)

摘要:按排序过程中依据的不同原则可分为:1 插入排序2 选择排序3 交换排序4 归并排序5 计数排序按照时间复杂度可分为:1 简单的排序方法 O(n^2), 包括直接插入排序、冒泡排序、选择排序2 先进的排序方法O(nlogn), 包括归并排序、快速排序、堆排序3 基数排序 O(d.n)各种算法的实现默认一般都是按升序排序。按稳定性分稳定排序,所有复杂度为O(n^2)的简单排序都是稳定的,基数排序也是稳定的。不稳定排序,所有性能较好的排序方法都是不稳定的。插入排序:依次插入一个未排序元素到已排序的序列中。插入排序是稳定排序,因它是每次考虑连续的两个元素。说一种方法是稳定的,是说为实现排序,它可以是稳 阅读全文
posted @ 2012-06-06 22:49 windflying 阅读(297) 评论(0) 推荐(0)

摘要:模板函数c++模板类/模板函数的声明与定义应该放在头文件里,不要分开来写类中函数的声明与定义(比如在.H文件里声明某个成员函数,在.CPP文件里定义该成员函数),这样会导致连接错误。所应该将模板类/模板函数的定义与声明写在一个.h文件里。STL 排序一个类型,如果要支持调用STL sort进行排序,那么应该实现operator<, 赋值操作。读取字符串(包括空格)fgets的输入包含有换行符gets的没有例如: 如果输入Hello+回车fgets: "Hello\n"gets: "Hello"指针减法指针减指针等于两个指针之间的元素的个数。例如:i 阅读全文
posted @ 2012-06-06 22:40 windflying 阅读(331) 评论(0) 推荐(0)

摘要:提交了N次,还是TLE。郁闷~~ 事实证明要选C++ 无语#include <stdio.h>#include <stdlib.h>inline void swap(int *a, int i, int j){ int temp; temp = a[j]; a[j] = a[i]; a[i] = temp;}//找比k大的最小数 前提:a[b...e]是倒序的 并且总是存在一个比k大的数int find(int *a, int b, int e, int k){ if (b == e) return b; if (b+1 == e) { ... 阅读全文
posted @ 2012-06-05 10:37 windflying 阅读(167) 评论(0) 推荐(0)

摘要:如何调用STL排序模版对内置类型数组进行排序?函数:void sort( iterator start, iterator end );排序数组 int a[n]sort(a, a+n);如果要把algrithom中的函数应用于数组,对于需要iterator参数的地方,传递的都是相应的地址next_primutation(a, a+n)函数:void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));比较函数的定义为:int cmp(const void *a, const void 阅读全文
posted @ 2012-06-05 09:13 windflying 阅读(200) 评论(0) 推荐(0)

摘要:1 求第k个排列2 求给定排列在全排列中的序号3 求下k个排列#include <iostream>#include <stdlib.h>//#include <algorithm>#include <map>#include <time.h>using namespace std;unsigned int mp[1000+1] = {1, 1, 2, 6, 24, 120, 720};unsigned int Fatorail(int n){ unsigned int value=1; if (mp[n]) return mp[n] 阅读全文
posted @ 2012-06-04 21:04 windflying 阅读(349) 评论(0) 推荐(0)