要开发能在Linux下运行的C程序工具,对C程序与Linux的基本交互方式的认识是必不可少的。
首先需要了解到,在Linux终端中,程序的运行都会有一个返回值,若该返回值是0,则代表该程序运行成功,若返回值是其他数值,则表示该程序的运行出错了,而这个数值一般是代表其错误码。
使用echo $?命令可以查看上一条命令执行后返回的值。
ls
cworkspace Documents Music Public Videos
Desktop Downloads Pictures Templates
echo $?
0
另外还需要了解到的是 && 的使用:
命令一 && 命令二
只有当命令一成功运行了,即返回值为0的时候,命令二才会被执行。因此这也是判断命令执行是否成功的一种方式。
一般情况下,我们在编写C的main函数的时候,都习惯在结尾返回一个0。其实这也是为了表示程序的成功运行,也就是说,如果程序运行有错,我们可以返回除了0以外的其他数值。
C的返回值就是C程序与Linux进行交互的方式之一。
当我们对C程序成功编译后,得到了可执行程序,执行该可执行程序会得到一个返回值,可以使用以上方式进行查看。
实验如下:
创建一个C程序命名为main.c:
int main()
{
printf("successful\n");
return 0;
}
编译执行并列出目录下的文件:
gcc main.c -o main.out && ./main.out && ls
执行结果:
successfulmain.c main.out
修改main.c代码:
int main()
{
printf("failed\n");
return 1;
}
使用同样的命令执行:
gcc main.c -o main.out && ./main.out && ls
结果:
failed
显然,由于返回值为1,因此ls命令没有被执行。
事实上,C的入口函数main的完整形式是有两个参数的:
int main(int argv, char* argc[])
{
return 0;
}
其中,第一个参数argv表示的是执行该程序时传入的参数个数,第二个参数则保存了执行该程序时传入的参数。
例如,将main.c修改如下:
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 1argc[0] is ./main.outmain.c main.out
显然,程序成功执行,传入的参数有一个,即执行可执行文件main.out的命令。
此时,若随意传入几个参数:
./main.out second third && ls
结果:
argv is 3argc[0] is ./main.outargc[1] is secondargc[2] is thirdmain.c main.out
在Linux下,程序的运行一般都会有一个返回值,返回0则说明该程序运行成功,可以使用echo $?命令查看,或使用&&验证。因此,C程序可以使用返回值与Linux交互。另外,C程序的main函数的完整原型是int main(int argv, char* argc[]),可以用来接收对C程序传入的参数。
了解这些知识是使用C开发Linux小工具的基础。
原文地址:http://byhan.blog.51cto.com/13451087/1979894