您的位置:首页 > 运维架构 > Shell

Linux环境下c语言程序执行shell脚本

2013-12-27 16:08 417 查看
   同一个Linux服务器上,多人在同时使用,假如开发了一个shell脚本(名字为getcode.sh),大家在任何目录下都有可能会需要使用到,那么这种情况最好考虑写一个linux c语言的可执行程序(名为getcode),由这个c程序来执行shell脚本,然后将getcode二进制c程序放到/bin/或者/sbin/目录下,以后在任何目录都可以像使用ls命令一样来使用getcode,间接的就是在使用getcode.sh脚本了,而不需要每次将getcode.sh脚本拷贝当前目录来执行。

好吧!直接上代码,c语言下调用shell脚本

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
//printf("count: %d\n", argc);

char sh_cmd[500];
//memset(sh_cmd, , sizeof(char)*500);

// use bash not source or .
sprintf(sh_cmd, "bash /home/ubuntu/zhangmin/develop/getcode/getcode.sh");

//将执行时的参数全部传给run_py.sh脚本
int i = 0;
for (i=1; i<argc; ++i)
{
sprintf(sh_cmd, "%s %s", sh_cmd, argv[i]);
}
//printf("%s", sh_cmd);
system(sh_cmd);
printf("\n");
//system("logname");
//system("whoami");
}
最后使用gcc getcode.c -o getcode命令编译生成getcode应用程序
cp -fr getcode /bin/

sudo chmod 777 -R /bin/getcode

注意:

bash /home/ubuntu/zhangmin/develop/getcode/getcode.sh

这里执行getcode.sh脚本用到了bash,getcode.sh开头处使用!#/bin/bash

如果采用source 或者 . 命令 ,运行脚本可能会提示报错等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息