初识C程序与Linux交互

☆樱花仙子☆ 提交于 2019-12-05 22:34:36

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

执行结果:

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!