Linux C基本原理

本文介绍了Linux C编程的基础知识,包括makefile的使用、main函数的参数、输入输出流的重定向、管道的实现以及指针和内存管理。通过实例讲解了如何使用gdb进行调试,探讨了内存分配与数据在内存中的存储方式,最后讨论了字符串与数组的特性。
摘要由CSDN通过智能技术生成


C语言小巧灵活,语法简单,适合做一些小工具。如果用C语言做出各种各样的小工具,并结合起来,整个Unix/Linux系统就是这样来的;C语言还能用来做与硬件打交道的程序,比如操作系统,单片机,ARM嵌入式,Arduino;C语言还用来做一些有高性能要求的应用程序,比如Nginx。
C语言是随着Unix而诞生的语言,在Unix下开发C语言才是真正的开发。MAC的操作系统是Unix内核的,Windows是没法装Unix的,所以要用Linux,Linux是和Unix完全兼容的。

make

make工具内部用的是gcc,用Makefile来统一描述代码之间的关系。举例:

#this is makefile 注释
#源文件:需要链接的文件
hello.out:max.o min.o hello.c 
#Tab(6个空格) 命令 表示最终编译出hello.out的命令
	gcc max.o min.o hello.c -o hello.o
#找到max.o min.o怎么来的
max.o:max.c
	gcc max.c
min.o:min.c
	gcc min.c

然后在当前目录直接用make命令。makefile的一个优点就是已经编译生成的.o文件如果没有改动,下次编译不会再重新编译。

main函数

C语言再Linux中运行的时候,是可以与操作系统交互的,

int main(int argv,char* argc[])
{
   
	return 0;
}

Linux的指令gcc main.c -o main.out && ./main.out表示&&前的指令执行成功后执行后面的指令,那么怎么判断前面的成功了呢?执行完一个命令或者运行完一个程序之后执行指令echo $?,如果结果是0,说明是正常执行,否则返回错误码,就是main的返回值。例如,如果main中return 101,gcc之后执行./main.out && ls,ls指令就不会执行,并且指令echo $?的结果就是101。

main函数的两个参数,argv表示命令的参数个数,argc表示参数具体是哪些。例如,./main.out命令,argv就是1,./main.out -ls,argv就是2。

输入,输出,和错误流

在这里插入图片描述
重定向
标准的输入流是0,标准的输出流是1,不写默认是输出流。例如,命令./a.out 1>> a.txt就表示把标准输出流从原来的终端重定向到文本文件中,并且>>表示如果多次重定向,文件中的内容不会覆盖,而是追加在后面,>就表示覆盖文件。
再例如,ls /etc >> etc.txt就表示把etc目录下的所有文件名列表存在etc.txt文件中。

管道

Linux中多个小工具如何结合起来使用?Linu

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值