程序和shell脚本交互方法
2016-02-02 09:41
661 查看
c程序和shell脚本交互方法可使用popen()+fget()方式进行。
举例如下:
脚本按照一定格式输出,c程序按照该格式进行解析,即可得到脚本的相应执行结果。
举例如下:
c程序
test.c:#include <stdlib.h> #include <limits.h> #include <stdio.h> #include <errno.h> #include <string.h> int main(int argc ,char *argv[]) { char cmd[512]={0}; snprintf(cmd,sizeof(cmd),"/root/test/test.sh", argv[1],argv[2],argv[3],argv[4]); FILE *fp = popen(cmd,"r"); if(fp ==NULL) return 0; char *ptr=NULL; char *ptr1=NULL; char line[512]={0}; char status[512]={0}; int state=0; time_t start=0, end=0; long long total=0, cur=0; start=time(NULL); while(fgets(line,sizeof(line),fp)) { state=strtol(line,&ptr,10); if(state == LONG_MAX || state == LONG_MIN || ptr == line) { printf("%s\n",line); continue; } total=strtoll(&ptr[1],&ptr1,10); strncpy(status,&ptr1[1],sizeof(status)); printf("state:%u\n",state); printf("total:%llu\n",total); printf("status:%s\n",status); } pclose(fp); fp = NULL; end=time(NULL); printf("start:%lu ;end:%lu\n",start,end); return 0; }
shell脚本
test.sh:#!/bin/bash echo "state_1;1024;;The first!" sleep 1 echo "state_2;2048;The sencond!" sleep 1 echo "state_3;3096;The third!" exit 0
编译程序并执行
[root@localhost test]# gcc test.c -o test [root@localhost test]# ./test state_1;1024;;The first! state_2;2048;The sencond! state_3;3096;The third! start:1454376977 ;end:1454376979 [root@localhost test]#
脚本按照一定格式输出,c程序按照该格式进行解析,即可得到脚本的相应执行结果。
相关文章推荐
- Linux之shell脚本系列 ----- 服务启动/关闭/重启/状态
- Powershell Studio 创建 可视化界面
- 【linux备忘笔记】Linux root 从bash-3.2回到root@localhost(个性化设置)
- Shell脚本编程概述(四):bash内置字符处理工具
- Linux下查看命令行历史记录.bash history(history)
- Shell脚本小记
- dirname命令介绍-使用dirname在shell脚本中获取当前脚本文件所在的绝对路径
- shell编程-告警系统
- xshell下bpython使用退格键的问题
- 如何在交互式shell脚本中创建对话框
- Linux Shell脚本教程:30分钟玩转Shell脚本编程(笔记)
- Ubuntu下解决bash 没有那个文件或目录的方法
- Ubuntu下解决bash 没有那个文件或目录的方法
- shell中if多重条件
- Shell编程中while与for的区别及用法详解
- shell 判读
- Shell In A Box:一款访问远程Linux服务器的SSH终端
- 使用adb shell查看文件
- bash脚本编程之二 条件判断
- 利用jspx解决jsp后缀被限制拿shell