C语⾔程序中调⽤脚本,C语⾔调⽤SHELL脚本
在Linux 环境下Shell脚本具有⾮常强⼤的功能!使⽤Shell可以很⽅便的使⽤和管理Linux系统,最近学习了⼀点shell知识,所以⼀直在
想要是可以在C/C++中调⽤shell脚本那该有多好啊! 因为使⽤C/C++要⼏百⾏代码才能搞定的!使⽤shell只要短短⼗⼏⾏就可以轻松搞定!
今天在看⼀个视频的时候!视频中给出的⼀个简单的C程序!
#include
#include
int main(void)
{
f or(int i=0; i<=100; ++i)
{
p rintf("Completed: %d%% ", i);
f flush(stdout);
s leep(1);
}
r eturn 0;
}
此程序就是想利⽤fflush(stdout) 来清除缓冲区!从⽽使输出只有⼀⾏!但是在我的系统上去怎么也实现不了!(希望有⼤师指点指点!视频⾥的教授⽤的是Mac OS操作系统!)我在⽹上也没有到原因!所以我只有另寻道路!
想到其就是清除掉了已输出的内容!这个就是在终端中使⽤clear 命令啊! 所以想到可以使⽤system("clear"); 查看了⼀下system函数的⼿
册页! 发现这个system函数就是我所要的可以实现在C/C++中调⽤shell脚本的⼯具!
#include
int system(const char *command);
linuxshell脚本怎么运行DESCRIPTION
system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.
因为system()执⾏的命令为/bin/sh -c command , 也就是说在终端中可以运⾏的shell 命令都可以调⽤执⾏!所以
#include
#include
int main(void)
{
f or(int i=0; i<=100; ++i)
{
p rintf("Completed: %d%%\n", i); // 这⾥“\n”是必须要加的!不然不会打印
s ystem("clear");
s leep(1);
}
r eturn 0;
}
虽然这个程序勉强可以满⾜要求!但是还是不够尽⼈意!所以有想了想!既然可以⽤⼀般命令!那应该也可以运⾏⼀个⾃⼰写的脚本! 于是
便动⼿写了个脚本 shell.sh
#!/bin/bash
#Filename: shell.sh
echo -n Completed:
tput sc
count=0;
while true; do
i f [ $count -lt 101 ]; then
l et count++;
t put rc;
t put ed;
e cho -n $count%
s leep 1;
e lse echo ; exit 0;
f i
done
然后就是chmod u+x shell.sh 将shell.sh设为可执⾏,然后在同⽬录下建⽴fun.c
#include
int main(void)
{
s ystem("./shell.sh");
r eturn 0;
}
这样直接调⽤⾃⼰编写的shell脚本同样达到了⽬的(第⼀次写博客⾃⼰喜⼀个!!)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论