linux c 运行脚本,linux 将c源代码当作shell一样脚本运行_沃航科技

大家好,小沃这里为大家献上一点小技巧,关于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/下面就能实现刚才我所描述的功能了。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值