自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 sum (L)

对list求和code(defun resursive_sum (L)        (if (null L)            0            (+ (first L) (resursive (rest L)))))

2012-06-01 13:20:05 358

原创 lisp小程序,useless

用于求T(n)期中T(n)= 1 (n = 1 时),T(n) = n + T(n-1)lisp code(defun trianguler (N)      (if (= N 1)         1        (+ N (trianguler (- N 1)))))

2012-06-01 00:38:22 673

原创 library sort

以前对这个算法不以为然,现在却很是喜欢,不是因为她有多么高效,而是这种方法在一个程序设计时很有用,程序员无法预知以后会发生什么,所以预留是很重要的,比如错误码的预留,以及在通信协议实现中太有必要了。。。。

2012-05-31 22:32:04 281

原创 sprintf,snprintf,vsprintf,vsnprintf

这几个函数都会在字符串末尾加上null字节,但返回值是不包扩这个null字节的在X/Open出的XSH 第四次发行第二版中只有第一个函数,后面的三个系统调用是没有的,不过在IEEE Std 1003.1-2008中都包含,The Open Group Base Specifications Issue 7中有这些函数,故这几个函数不会存在移植性问题,期中issue7中还有vdprintf,原型

2012-05-28 00:35:37 1241

原创 pam

这几天考试,talk'程序的代码过几天再完善,前几天一直在分析su和sudo的源码,因为想做过个直接登录而不用通过su程序直接登录的工具集成到talk中,分析了那么久,都不知道它们到底怎么有权限直接访问shadow文件的,也不知道该怎么登录,终于发现他们使用pam认证的,在pam.d下有他们的文件,记在这里,考完了来写下工具的代码。。。

2012-05-26 00:10:44 226

原创 从talk服务器上获取要交流对象的地址

void do_talk(const char *buf,int sockfd){        FILE *fp;        const char *t;        struct  login_user me;        fp = fopen("login.dat","r");        if (fp == NULL) {

2012-05-22 20:38:20 266

原创 logout函数,有待改进,先完成基本的功能

void do_logout(const char *buf,int sockfd){        FILE *fp;        const char *t;        struct login_user me;        struct login_user logoutuser;        fp = fopen("login.dat","r+");

2012-05-21 20:22:32 1165

原创 。。。。。

代码质量还是太差,还得多练习,想用plan9,但没有多余的主机,过几天就要考试了,这个学期还没翻过书,又要准备考研,寝室的一群家伙打dota都打到一点多,休息时间都没得保证,悲剧的人生莫过如此。。。前些天unix环境高级编程和unix网络编程在自习室被盗了,算法导论也差点丢了,还好那天晚上带回来看了一会。。。。。不想了,这几天复习汽车理论去。。。。。

2012-05-21 00:17:40 256

原创 talk的登录函数

int user_login(struct user me,FILE *fp,int sockfd) {        rewind(fp);        struct user t;        while (fread(&t,sizeof(struct user),1,fp) == 1) {                if (strcmp(t.name,me.n

2012-05-21 00:02:20 301 1

原创 在文件流中查找用户存在及加入用户

struct  user{        char name[32];        char passwd[32];};int find_add_user(struct user me,FILE *fp) {        rewind(fp);        struct user t;        while (fread(&t,sizeof(struct

2012-05-19 23:07:12 970

原创 whoami的更简单实现

void whoami(int sockfd) {        char *ptr;        char buf[MAXLINE];        if ((ptr = getlogin()) == NULL) {                err_ret("error");                return;        }

2012-05-19 21:03:03 372

原创 firsttok的修订版本

char *firsttok(const char *s,const char *delimiter){        const char *p;        const char *a;        for(p = s;*p != '\0';) {                for (a = delimiter;*a != '\0';++a) {

2012-05-19 20:57:18 209 1

原创 whoami程序的一种实现,用于talk程序中查看远程用户的

void Whoami(int sockfd) {        struct passwd *pwd;        char buffer[MAXLINE];        uid_t uid;        uid = getuid();        pwd = getpwuid(uid);        if (pwd == NULL) {

2012-05-18 23:31:00 236

原创 没什么价值的小程序的头文件(talk程序,用于聊天,远程执行命令。。。)

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include

2012-05-18 21:54:24 365

原创 重启及关机

void Reboot(int sockfd) {        int i;        sync();        if (( i = reboot(LINUX_REBOOT_CMD_RESTART)) !=0) {                char *buf= "failed to reboot the computer\n";                w

2012-05-18 16:28:48 237

原创 获取系统信息,如开机时间,ram容量,等信息

struct sysinfo getinfo(int sockfd) {        int i;        struct sysinfo info;        char buffer[BUFSIZ];        if ((i = sysinfo(&info)) == -1)                 err_ret("get sysinfo error")

2012-05-18 16:20:03 277

原创 获取系统名字及相关信息的函数

struct utsname getname(int sockfd) {        struct utsname name;        int i;        char buffer[4096];        bzero(&name,sizeof(name));        i = uname(&name);        if ( i == -1) {

2012-05-18 16:17:06 209

原创 在指定的文件描述符中查找token,

int grepdata(char *buf,int fd) {        off_t n;        char t[MAXLINE];        char destbuf[MAXLINE];        char srcbuf[MAXLINE];#ifdef DEBUG//      fprintf(stderr,"t is %s\n",t);#endi

2012-05-17 20:15:55 343

原创 将字符串右边的空白去掉

void trapright(char *buf,char *trapper,char *destbuf){        char *p;        const char *a;        for (p = buf+strlen(buf)-1;p>=buf; ) {                for ( a = trapper;*a!='\0';++a)

2012-05-17 20:10:01 321

原创 将字符串左边的空白去掉

void trapleft(char **buf,char *trapper){        char *p;        const char *a;        for (p=*buf;*p!='\0'; ) {                for (a = trapper;*a != '\0';++a) {                        if

2012-05-16 20:56:48 248

原创 得到第一个词(token)

char *firsttok(const char *s,const char *delimiter,char first[]){        const char *p;        const char *a;        for(p = s;*p!='\0';++p) {                for (a = delimiter;*a != '\0

2012-05-16 20:54:46 169

原创 将源字符串中特定字串替代为指定字串

int strreplace(char *src,char *tbreplaced,char *replace,char *replaced) {        char *p;        p = strstr(src,tbreplaced);        if (p == NULL) {                strcpy(replaced,src);

2012-05-16 00:32:13 195

原创 2012-5-16

暗恋的她,对我总是不冷不热的多的我也不想了,谁没有追求更好的人的想法呢,祝福她吧我不是计算机专业的,但我喜欢计算机,它已经花了我很长时间了总有一天,我会成巨人

2012-05-16 00:09:11 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除