shell脚本:hello.sh

#!/bin/bash
echo "i am in shell script"
echo "param 1 is $1"
echo "param 2 is $2"
variable=$[ $ + $ ]
echo "sum is $variable"

system接口:system.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h> void main(void)
{
printf("i am in c code!\r\n"
system("/bin/bash ./hello.sh 10 20);
}

输出

i am in c code!
i am in shell script!
param is
param is
sum is

 execlp接口:execlp.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h> void main(void)
{
int ret = ;
int param1 = ;
int param2 = ; printf("i am in c code!\r\n");
if(fork() == )
{
printf("execlp...........\r\n");
ret = execlp("/bin/bash", "bash", "hello.sh", &param1, &param2, NULL);
if(ret < )
{
printf("execlp failed!\r\n");
return;
}
}
}

这其中execlp的参数不管怎么填都得不到正确运行的结果

使用system获取system本身的返回值和脚本的返回值

int system_func(const char *command)
{
int status;
int ret; status = system(command);
#ifdef DEBUG
printf("status is 0x%x\n", status);
#endif
if(- == status)
{
printf("%s:system error\n", __FUNCTION__);
return -;
}
else
{
if(WIFEXITED(status))
{
if( == WEXITSTATUS(status))
{
ret = (status>>)&0xFF;
return ret;
}
else
{
printf("%s:run shell script fail, script exit code:%d\n", __FUNCTION__, WEXITSTATUS(status));
return -;
}
}
else
{
printf("%s:system fail, exit status=%d\n", __FUNCTION__, WEXITSTATUS(status));
return -;
}
}
}

[shell]system和execlp简单示例的更多相关文章

  1. akka简单示例-1

    刚刚开始接触akka,网上找了2个简单示例,并在公司运营机器上尝试,踩了一些坑,在此记录. 1. 本地hello world [torstan@sparkb5-i ~/akka_example/hel ...

  2. 【Apache Kafka】二、Kafka安装及简单示例

    (一)Apache Kafka安装 1.安装环境与前提条件   安装环境:Ubuntu16.04   前提条件: ubuntu系统下安装好jdk 1.8以上版本,正确配置环境变量 ubuntu系统下安 ...

  3. SignalR 简单示例

    一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...

  4. Web API 简单示例

    一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...

  5. JAVA使用jdbc连接MYSQL简单示例

    以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...

  6. Mybatis的简单示例

    首先新建一个JavaWeb项目并导入mybatis依赖的jar包,同时Mybatis是对数据库的操作所以我们需要在数据库中新建一个表user用来演示. 新建完表之后我们还需要建立相对应的实体类User ...

  7. [xfire]使用xfire开发webservice的简单示例

    目前项目上有用到xfire,所以临时看了些xfire的资料和示例,自己照着写了一个简单示例. xfire在2007年后已经停止更新,正式更名为apache cxf,也可以说是xfire2.0. xfi ...

  8. Redis 安装与简单示例

    Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或 ...

  9. Java调度框架Quartz简单示例

    Quartz的大名如雷贯耳,这里就不赘述,而且本文也不作为深入探讨,只是看完Quartz的官方文档后,下个简单示例,至少证明曾经花了点时间学习过,以备不时之需. Quartz使用了SLF4J,所以至少 ...

随机推荐

  1. ORA-00600 qerpxInitialize

    今天早上巡检又见bug: A select query using a connect-by clause executing using parallel query may fail with O ...

  2. 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式

    最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各种防抓取的方法.不过道高一尺,魔高一丈,通过研究都是有漏洞可以钻的.下面的例子都是用PHP写的,不会用PHP来curl的孩纸先 ...

  3. 神奇的container_of

    container_of是linux内核中常用的一个宏,这个宏的功能是,根据某个结构体字段的指针,找到对应的结构体指针. 话不多说,先上源码: /** * container_of - cast a ...

  4. 一致性哈希算法(Consistent Hashing) .

    应用场景 这里我先描述一个极其简单的业务场景:用4台Cache服务器缓存所有Object. 那么我将如何把一个Object映射至对应的Cache服务器呢?最简单的方法设置缓存规则:object.has ...

  5. C# int与string转化

    1.int-->string ; string s1 = a.ToString(); string s2 = Convert.ToString(a); 2.string -->int &q ...

  6. Hbase总结(八)Hbase中的Coprocessor

    1.起因(Why HBase  Coprocessor) HBase作为列族数据库最常常被人诟病的特性包含:无法轻易建立"二级索引",难以运行求和.计数.排序等操作.比方,在旧版本 ...

  7. Nginx如何保留真实IP和获取前端IP

    原理: squid,varnish以及nginx等,在做反向代理的时候,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端web服务 ...

  8. 帧率(FPS)计算的六种方法总结

    原文地址:http://blog.csdn.net/u012494876/article/details/53368164 帧率(FPS)计算是游戏编程中常见的一个话题.大体来说,总共有如下六种方法: ...

  9. 委托与事件代码详解与(Object sender,EventArgs e)详解

    委托与事件代码详解 using System;using System.Collections.Generic;using System.Text; namespace @Delegate //自定义 ...

  10. python笔记-print输出

    print语句默认是输出一行后添加一个换行符 >>> for item in ['apple','ibm','google','oracle']: ... print item .. ...