摘要: socket()——生成socket句柄#include sys/types.h; #include sys/socket.h; int socket(int domain, int type, int protocol); domain : "AF_INET"type : SOCK_STREAM(TCP), SOCK_DGRAM (UDP)protocol:0返回值:socket句柄(整型);(注意:有很多种 domain、type,请看 socket() 的 man帮助。另一个方式去得到 protocol。同 时请查阅 getprotobyname() 的 man 帮助。)int 阅读全文
posted @ 2010-12-17 12:32 flyxiang 阅读(769) 评论(0) 推荐(0) 编辑
摘要: #include stdio.hint printf( const char *format, ... );printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中. 字符串format(格式)由两类项目组成 - 显示到屏幕上的字符和定义printf()显示的其它参数. 基本上, 你可以指定一个包含文本在内的format(格式)字符串,也可以是映射到printf()其它参数的"特殊"字符. 例如本代码 char name[20] = "Bob";int age = 21;printf( "Hello %s, you are %d years ol 阅读全文
posted @ 2010-12-17 12:31 flyxiang 阅读(2165) 评论(0) 推荐(0) 编辑
摘要: 先是建立服务器程序:#include stdio.h#include stdlib.h#include string.h#include netinet/in.h#include sys/socket.h#include unistd.h#include sys/types.h#define MYPORT 5858#define BACKLOG 10#define MAXSIZE 80#define BUFSIZE 100//单独的数据处理 就是简单的从client端接受数据, 然后又发给client端void str_ser(int new_fd) {char b 阅读全文
posted @ 2010-12-17 12:29 flyxiang 阅读(1624) 评论(0) 推荐(0) 编辑
摘要: 环境,虚拟机 VirtualBox, 系统Ubuntu9.0.4 编译环境gcc 4.4.0今天看到一个比较常用的函数 fork,用于创造子进程,首先接触到下面的这个函数#include unistd.h;#include sys/types.h; main () { pid_t pid; pid=fork(); if (pid 0) printf("error in fork!"); else if (pid == 0) printf("i am the child process, my process id is %dn",getpid()); else printf("i 阅读全文
posted @ 2010-12-17 12:04 flyxiang 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 今天学习了一下pipe管道,用于父子或者相关联的两个进程之间的通讯,pipe使用 pipe()函数建立,必须用于fork建立的进程中,并且需要在fork之前调用,否则是没有效果的,下面是一个例子和用法说明#include unistd.h#include sys/types.h //系统数据类型头文件#include errno.h //出错类型头文件#include stdio.h //标准输入输出 #include stdlib.h //标准系统库int main(void){int pipe_fd[2]; //创建管道描述符,其中pipe_fd[0]为接收描述符,pi 阅读全文
posted @ 2010-12-17 12:03 flyxiang 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 标准管道流,用于文件流模式popen();原型 FILE *popen(char *command,char *type);//如果调用成功,则返回一个文件流,如果无法创建则返回NULL,该函数主要用于执行外部程序// command 参数是一个指向以 NULL 结束的 shell 命令字符串的指针。//其中type参数是用来表示读或者写的,不能同时为读和写,管道将会以参数type的第一个字符代表的方式打开//popen打开的数据管道流可以使用pclose()关闭, popen,pclose用于打开和关闭数据流//如果pclose(FILE *stream)调用失败,则返回-1;注意,在使用p 阅读全文
posted @ 2010-12-17 12:02 flyxiang 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 信号通讯采用raise发送信号#include stdio.h#include stdlib.h#include signal.h#include sys/types.h#include sys/wait.hint main(){pid_t pid; //建立进程IDint ret;if((pid=fork())0){//创建子进程出错,出错处理 }if(pid==0){//子进程中raise(SIGSTOP); //子进程发送一个信号//终止信号exit(0); //子进程退出 }else{printf("pid=%d\n",pid);if(waitpid(pid,SI 阅读全文
posted @ 2010-12-17 12:01 flyxiang 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 共享内存共享内存是可以被多个进程共享访问的一部分物理内存,如果多个进程都把一个内存区映射到自身的虚拟地址空间,则这些进程就可以直接访问该共享的内存区域,从而通过共享内存的方式实现多进程间的通讯,共享内存是进程间数据通讯的最快方法.共享内存的实现分为两步:1,创建共享内存,使用shmget函数2,映射共享内存,将创建的共享内存映射到具体的进程空间中去,使用shmat函数int shmget(key_t key,int size,int shmflg); //用于创建一个共享内存共享内存对象的创建或获得。与其它IPC机制一样,进程在使用共享内存区域以前,必须通过系统调用sys_ipc (call值 阅读全文
posted @ 2010-12-17 12:00 flyxiang 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 守护进程在linux系统的控制台下敲击 ps -A命令 或者 ps -e命令我们可以看到当前系统的前后台进程,凡是最后一个字符为d的进程都为守护进程,例如smbd,vsftpd,maild,telnetd等等守护进程是没有控制终端的,终端名称都为?,所有守护进程的父进程都是init进程下面创造一个守护进程例子#include stdio.h#include stdlib.h#include string.h#include fcntl.h#include sys/types.h#include unlstd.h#include sys/wait.h#define M 阅读全文
posted @ 2010-12-17 12:00 flyxiang 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 使用new和delete进行动态内存分配和释放运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。(2)自动地返回正确的指针类型,不用进行强制指针类型转换。(3)可以用new对分配的对象进行初始化。使用例子:(1)int* p;p=new int[10]; //分配一个含有10个整数的整形数组delete[] p; //删除这个数组(2)int* p;p 阅读全文
posted @ 2010-12-17 11:59 flyxiang 阅读(175) 评论(0) 推荐(0) 编辑