初识C程序与Linux交互

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识C程序与Linux交互相关的知识,希望对你有一定的参考价值。


Linux下程序的返回值

要开发能在Linux下运行的C程序工具,对C程序与Linux的基本交互方式的认识是必不可少的。

首先需要了解到,在Linux终端中,程序的运行都会有一个返回值,若该返回值是0,则代表该程序运行成功,若返回值是其他数值,则表示该程序的运行出错了,而这个数值一般是代表其错误码。

使用echo $?命令可以查看上一条命令执行后返回的值。

ls
cworkspace  Documents  Music     Public     Videos
Desktop     Downloads  Pictures  Templates
echo $?
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

执行结果:

successfulmain.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 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小工具的基础。





以上是关于初识C程序与Linux交互的主要内容,如果未能解决你的问题,请参考以下文章

linux 初识

Linux基础系列之--文件系统初识

如何使用 xcode 将快照划分为多个片段,以便让用户与每个片段进行交互?

万恶之源-与python的初识

初识linux

python初识