Chinaunix首页 | 论坛 | 博客
  • 博客访问: 246062
  • 博文数量: 41
  • 博客积分: 1523
  • 博客等级: 上尉
  • 技术积分: 579
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-05 21:23
文章分类

全部博文(41)

文章存档

2014年(1)

2013年(2)

2012年(1)

2011年(2)

2010年(3)

2009年(1)

2008年(20)

2007年(11)

分类: LINUX

2008-05-16 11:52:51

    最近shell看得多了,写shell变得越来越郁闷,一个简单的2000次递归居然把机器弄得 hangup了,看看c效率,速度比shell强多了。决定从今天开始学c了。
    下面是我测试的3个简单shell脚本,就是把我机器弄得挂掉那个。

#!/bin/sh
A1(){
  local i=$1
  if [ $i -eq 1 ];then
        echo 1
  else
        local j=`expr $i - 1`
        k=`A1 $j`
        echo `expr $i + $k`
  fi
}

A2(){
  local i=$1
  if [ $i -eq 1 ];then
        M=1
  else
        A2 $(($i-1))
        ((M=$M+$i))
  fi
}

A3(){
  [ "$1" = 0 ] && return $?
  local M=$1
  A3 $(($M-1))
  return $(($M+$1))
}

time A1 $1
time { A2 $1;echo $M; }

A3是一个概念,A1是挂掉机器的脚本,A2是我优化改进后的,快多了,但还是 ……
下面是我从 cnscn 那里看来的一个方法,在linux下调试c方便了不少,很有意思的,哈哈。

#-----------------------------------------------------------#

#!/bin/bash
ExecF="/dev/shm/tempcfile"
trap 'rm -f ${ExecF}' 0 2 # SIGINT
[ -z $1 ] && { echo "${0##*/} you_C_file.c or #!/usr/bin/env cftest ";exit 0;}
[[ `file $1` == "$1: ASCII C program text" ]] && gcc -o ${ExecF} $1
[[ `file $1` == "$1: a cftest script text executable" ]] && gcc -x c <(tail -n +2 $1) -o ${ExecF}
[ -f ${ExecF} ] && ${ExecF} ${@#${1}}
#-----------------------------------------------------------#

建立一个文件/usr/bin/cftest,吧这个脚本写里面,别忘了加上执行的权限。

一个c文件  a.c

#include
main(viod)
{
  int i;
  for(i=9;i<235;i++)
  {
     if((i % 9) == 0)
        printf("this is %d\n",i);
  }
}
方法1、 可以用 cftest a.c 来执行这个c文件。
方法2、 在c文件的开头引用那个脚本,就可以直接执行。
#!/usr/bin/env cftest
#include
main(viod)
{
  int i;
  for(i=9;i<235;i++)
  {
     if((i % 9) == 0)
        printf("this is %d\n",i);
  }
}
直接运行 ./a.c  很好玩吧。

阅读(989) | 评论(0) | 转发(0) |
0

上一篇:xen 使用的一些技巧

下一篇:crype_word

给主人留下些什么吧!~~