您好,欢迎访问沃航(武汉)科技有限公司官方网站
linux 将c源代码当作shell一样脚本运行
2017-08-17 10:05:00

大家好,小沃这里为大家献上一点小技巧,关于linux中,如何让c语言代码向shell一样可以直接运行,其实这个技巧只是小沃在多年运维经验中所获得的一点小感悟而已。

大家知道,linux的c编程功能强大,而linux的shell编程可以调用很多系统命令。

c的好处在于它会将语言转化为二进制码,而二进制码的执行效率以及占用系统资源都比shell少很多。

shell的好处在于很多linux c需要包入很多的类库,需要写好几百行代码才能实现的事情,shell一句话就搞定了。

因此linux的c编程与shell编程可以说是各有千秋。


但是shell编程有一个非常大的好处,那就是编写后无需编译,直接运行。您可以将源代码直接放入生产环境中然后运行。如果生产环境有问题,直接修改shell然后执行就可以解决问题。


那么,这样的好处我们应该如何将其移植到c语言环境中去呢?

小沃就自己写了一个脚本,能够让linux的c语言直接被执行。

不卖关子了,直接告诉大家我是怎么处理的吧。秘密就是,通过个脚本,直接编译c语言,然后执行c语言生成的二进制文件。

第一步

判断当前的文件夹下面是否有与打算生成的文件名重名的文件,如果有,修改我们打算生成的文件名。

其方法是利用shell中的-f与-d命令,判断当前目录的文件名情况。


第二步

编译c源代码,这里用到了gcc的命令,我们不需要用过多的命令,使用最常见的"gcc 源码.c -o 二进制"这样就可以了。


第三步

执行"二进制"文件,这里就需要注意了,因为我们是模拟shell运行方式,所以不需要保留生成后的二进制文件,那么这里就必须将原来的可执行文件删除才行,因此唤起时必须采用多线程技术,也就是在执行后添加一个"&"。


第四步

使用wait命令让主线程在c没有执行完毕时阻塞


二话不说,上代码:

#!/bin/bash

if [ $# -eq 0 ];then
    echo "parameter error"
    exit
fi

if [ -f $1.exe ] || [ -d $1.exe ]; then
    NUM=1
    while [ -f $1.exe.$NUM ] || [ -d $1.exe.$NUM ]
    do
        NUM=$(($NUM+1))
    done
    NAME=$1.exe.$NUM
else
    NAME=$1.exe
fi

echo $NAME

gcc $1 -o $NAME || exit $?

./$NAME &

sleep 1

rm $NAME

wait

将上面的代码保存,然后放到/bin/下面就能实现刚才我所描述的功能了。


小沃不仅是研发能力强,服务器运维也是很厉害的哦。如果有这方便的需求,可以联系小沃哦。

联系我们
地址:
武汉市洪山区蓝晶国际7栋903
QQ:
932773931
电话:
027-59761089-806
手机:
13397158231
邮箱:
jevian_ma@worldflying.cn
×
物联网组态平台
试用账号:123456
试用密码:123456
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn
×
积木编程平台
试用方式:试用手机号码注册即可使用
如需测试更多功能或者有疑问可发送邮件至:jevian_ma@worldflying.cn