让你提前认识软件开发(23):怎样在C语言中运行shell命令?

时间:2023-11-10 15:19:44

第1部分 又一次认识C语言

怎样在C语言中运行shell命令?

【文章摘要】

Linux操作系统具备开源等诸多优秀特性,因此在很多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上,同一时候shell操作在Linux的编程中占有非常重要的地位,这就须要开发者熟练掌握在C语言中运行shell命令的相关操作。

本文用实际的代码演示了怎样在C语言程序中运行shell命令,为相关软件开发工作的开展提供了參考。

【关键词】

Linux  C语言  shell  命令  开发

一、程序运行流程

本文在Linux下运行一个简单的文件删除操作,C程序用makefile文件进行编译。程序运行流程如图1所看到的。

让你提前认识软件开发(23):怎样在C语言中运行shell命令?

图1 程序运行流程

文件删除是否成功,能够通过查看相应文件夹下的文件是否存在来推断。

二、文件夹结构

本文的C程序文件为TestShellCommand.c,编译生成的文件存放到release文件夹下。同一时候,在release文件夹下有一个TestFile文件夹,存放待删除的文件。文件夹结构如图2所看到的。

让你提前认识软件开发(23):怎样在C语言中运行shell命令?                 让你提前认识软件开发(23):怎样在C语言中运行shell命令?

图2 文件夹结构

三、C程序代码

本文中要用到的C程序代码例如以下:

/**********************************************************************

*

:// 改动历史记录, 包括改动日期、版本号号、改动人及改动内容

}

对于该程序,说明例如以下:

(1) 本程序利用“rm-rf …”命令来删除文件,该命令不仅能够删除文件,也能够删除非空文件夹(-rf參数表示递归强制删除)。当然,这里也能够直接用“rm …”命令来删除文件。“rm -rf %s/%s.*”中的“*”表示匹配全部的字符,即仅仅要文件索引与输入的一致,无论后缀是什么,都会被删除掉。

(2) 本程序利用“system”函数来运行删除文件的shell命令,该函数的原型为“int system(const char * string);”。“system”函数运行完毕之后会返回一些整型值,表示成功或失败。程序中用检查errno的方法来确认运行是否成功,如程序中errno为0和10表示运行成功。此外,要注意包括头文件<errno.h>。

(3) 本程序用strrchr函数查找输入的文件索引里面是否包括了“.”,即推断是否输入了文件的后缀,依据有无后缀来设置不同的删除命令。

四、makefile文件内容

本程序所用的makefile文件的内容例如以下:

TestShellCommand : TestShellCommand.c

The delete command is: rm -rf TestFile/123456.*

zhou@linux:~/zhouzx/TestShellCommand/release> ./TestShellCommand

Input the index of source file: 123456.r

The delete command is: rm -rf TestFile/123456.r

上面运行了四次TestShellCommand,123456.r文件都被成功删除掉了。为了验证程序的正确性,能够多用一些文件来进行測试。

六、总结

本文对C语言程序中运行shell命令的方法作了具体的介绍,并用实际的程序代码来演示了其运行结果。

在C语言程序运行shell命令的过程中,我们要注意下面问题:

(1) 一定要将shell命令配置正确,并在其运行前后打印具体的日志,方便对程序进行调试和查错。

(2) 在进行删除操作的之前,还要细致检查shell命令的正确性,确保程序不会误删除。

在实际的软件开发项目中,C语言程序运行于Linux之下已是十分常见。本文介绍了C语言程序中运行shell命令的过程,为相关软件开发工作的顺利开展提供了故意的參考。

(欢迎訪问南邮BBS:http://bbs.njupt.edu.cn/)
(欢迎訪问重邮BBS:http://bbs.cqupt.edu.cn/nForum/index)

(本系列文章每周更新两篇,敬请期待!本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)