linux c编程中调用 shell 命令

原创 2015年07月07日 14:51:06

system 函数,会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。


/*******************************************************
    本程序作为一个父进程,父进程调用子进程,然后监视子进程
的允许情况。
    可以将本进程作为守护进程(具体百度)
    可以把本程序添加到 /etc/rc.local 中,实现开机自启动(具体百度)
********************************************************/


#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <linux/stat.h>
#include <sys/wait.h>

#include <errno.h>
#include <stdlib.h>
#include <stddef.h>
#include <nvram.h>

#include <unistd.h>

int main(void)
{
    int ret;

    while(1){

        printf("开始启动子进程\r\n");

        /*
        调用 system 函数。该函数会去调用子进程,
        假设子进程为 /home 目录下的 client 程序
        使用 system 当调用子进程后,父进程将等待
        子进程退出
        */
        ret = system("/home/client");

        /*
        程序能运行到这里,说明子进程已经退出了
        ret 为返回值,返回值为 子进程 main 函数中的
        return 值。但实际并不相等,具体百度
        */
        printf("子进程退出,返回值 %d\r\n", ret);

        /*
        对返回值做个判断,是否是正常退出,也就是 return 0
        */
        if((-1 == ret) || (WEXITSTATUS(ret) != 0xa)){       //错误
            printf("非正常退出子进程\r\n");
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux C程序中调用shell终端的命令

http://blog.sina.com.cn/s/blog_457bf05a0101goqt.html 1.前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有...

Linux C 调用shell文本编程

转载于CSDN 地址 http://blog.csdn.net/arnoldlu/article/details/10517883 C程序调用shell脚本共有三种法子 :system()、...

linux c/c++ 中使用shell命令

linux 下C/C++中使用shell命令、 linux中find命令简介、c/c++中shell命令传递参数

linux C程序中获取shell脚本输出(如获取system命令输出)

1. 前言Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个 ping程序来测试网络的连通性,实现p...

linux C程序中获取shell脚本输出(如获取system命令输出)

linux C程序中获取shell脚本输出(如获取system命令输出) 2009-04-27 15:54 1. 前言 Unix 界有...

linux C程序中获取shell脚本输出(如获取system命令输出)

原文地址:http://hi.baidu.com/%C0%CB%C2%FE%B5%C4%D0%A1%D0%AB%D7%D3/blog/item/3e1366943d2cd941d1135ef8.htm...

Linux C编程实战——第七章 进程控制_项目实现_自写shell

自写shell 基本介绍:该shell命令目前实现了cd命令,tab补全,历史,和外部命令。 基本实现原理 : 根据输入命令,解析参数,然后再fork一个进程,在进程中利用execvp运行外部命令...

Linux c==读书笔记第10章shell编程(4)

4.shell程序设计的流程控制

Linux c==读书笔记第10章shell编程(3)

shell程序的变量和参数shell的功能:说明和使用变量 【对shell来说,所有变量的取值都是一个字符串,采用$var的形式来引用var的变量的值】 shell定义的环境变量 环境变量:和系...

Linux C编程实战——第六章 文件操作_项目实现_自写ls命令

自写ls命令 根据文件的操作,参考书籍资料,编写了ls命令   目前实现了 -R  -r   -l  -a   -i  -t 功能 直接上代码(已经加入了详细注释): 有不足请指教!  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)