初识C程序与Linux交互
来源:互联网 发布:golang sleep 编辑:程序博客网 时间:2024/06/07 05:29
Linux下程序的返回值
要开发能在Linux下运行的C程序工具,对C程序与Linux的基本交互方式的认识是必不可少的。
首先需要了解到,在Linux终端中,程序的运行都会有一个返回值,若该返回值是0,则代表该程序运行成功,若返回值是其他数值,则表示该程序的运行出错了,而这个数值一般是代表其错误码。
使用echo $?命令可以查看上一条命令执行后返回的值。
lscworkspace Documents Music Public VideosDesktop Downloads Pictures Templatesecho $?0
另外还需要了解到的是 && 的使用:
命令一 && 命令二
只有当命令一成功运行了,即返回值为0的时候,命令二才会被执行。因此这也是判断命令执行是否成功的一种方式。
C程序的返回值
一般情况下,我们在编写C的main函数的时候,都习惯在结尾返回一个0。其实这也是为了表示程序的成功运行,也就是说,如果程序运行有错,我们可以返回除了0以外的其他数值。
C的返回值就是C程序与Linux进行交互的方式之一。
当我们对C程序成功编译后,得到了可执行程序,执行该可执行程序会得到一个返回值,可以使用以上方式进行查看。
实验如下:
创建一个C程序命名为main.c:
#include <stdio.h>int main(){ printf("successful\n"); return 0;}
编译执行并列出目录下的文件:
gcc main.c -o main.out && ./main.out && ls
执行结果:
successful
main.c main.out
修改main.c代码:
#include <stdio.h>int main(){ printf("failed\n"); return 1;}
使用同样的命令执行:
gcc main.c -o main.out && ./main.out && ls
结果:
failed
显然,由于返回值为1,因此ls命令没有被执行。
C程序 main() 函数的参数
事实上,C的入口函数main的完整形式是有两个参数的:
int main(int argv, char* argc[]){return 0;}
其中,第一个参数argv表示的是执行该程序时传入的参数个数,第二个参数则保存了执行该程序时传入的参数。
例如,将main.c修改如下:
#include <stdio.h>int main(int argv, char* argc[]){ printf("argv is %d\n", argv); int i; for(i=0; i<argv; i++){ printf("argc[%d] is %s\n", i, argc[i]); } return 0;}
执行:
gcc main.c -o main.out && ./main.out && ls
结果:
argv is 1
argc[0] is ./main.out
main.c main.out
显然,程序成功执行,传入的参数有一个,即执行可执行文件main.out的命令。
此时,若随意传入几个参数:
./main.out second third && ls
结果:
argv is 3
argc[0] is ./main.out
argc[1] is second
argc[2] is third
main.c main.out
总结
在Linux下,程序的运行一般都会有一个返回值,返回0则说明该程序运行成功,可以使用echo $?命令查看,或使用&&验证。因此,C程序可以使用返回值与Linux交互。另外,C程序的main函数的完整原型是int main(int argv, char* argc[]),可以用来接收对C程序传入的参数。
了解这些知识是使用C开发Linux小工具的基础。
- 初识C程序与Linux交互
- [总结]C与Shell程序的交互
- JS与Native交互初识
- 初识交互设计与Axure
- 初识C语言程序
- 初识Linux程序
- 初识Linux程序
- 第一个与服务器交互的登录程序(C#)
- C#winForm程序与html JS交互调用
- 笔记-git与github的交互初识
- C程序之初识C语言程序
- Lua 与C交互
- Lua 与 C 交互
- Lua 与C交互
- Lua 与C交互
- Lua 与C交互
- Lua 与 C 交互
- lua与c交互
- Netflix是如何实现视频安全下载离线播放的?(上)
- package-cleanup
- 结构体数据类型
- 单机redis基本安装
- 不得不知 云计算入门必备的60条术语
- 初识C程序与Linux交互
- 备忘:访问多网段多路由
- 2017-11-8课堂作业查找字符串位置
- mysql格式化小数保留小数点后两位(小数点格式化)
- Groovy高效编程——‘匕首方法’的使用
- ssh:connect to host localhost port 22: Connection refused
- Spring Boot HTTP over JSON 的错误码异常处理
- 转:java学习笔记之——StringUtils.join()
- linux服务器CPU 高的排查过程