linux下的c语言编程实验报告

第五章:Linux 下的 C 语言编程姓名:学号:520913080429专业:信息安全 09-04实验内容:1.c 语言编程2.vi 编辑器3.gcc 编辑器4.gdb 编辑器5. gdb 中运行 Linux 的 shell 程序6.make7.env 系统变量1.c 语言编程一般模式编辑模式[root@localhost home]# cd /home/[root@localhost home]# vi hl.cYou have new mail in /var/spool/mail/root[root@localhost home]# lshl.c student vmware-tools-distrib[root@localhost home]#在调用 C 语言编译器的时候,可以通过给出“ -I”编译命令标志来引用保存在下级子目录或者非标准位置的头文件,类似命令如下:[david@localhost linux]$ gcc -I /usr/openwin/include hello.c先进入/usr/include 子目录,然后在 grep 命令里给出该名字的几个字母,如下所示:[david@localhost linux]$ grep KEYSPAN *.hpci_ids.h:#define PCI_SUBVENDOR_ID_KEYSPAN 0 x11a9pci_ids.h:#define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0 x53342.vi 编辑器一般模式 命令模式保存退出 不保存退出[Esc][:]wqq!编辑模式[root@localhost ~]# cd /home[root@localhost home]# vi cl.c[root@localhost home]# 3.gcc 编辑器gcc 的版本可以使用如下 gcc –v 命令查看:[david@DAVID david]$ gcc -vReading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/specsConfigured with: /configure --prefix=/usr --mandir=/usr/share/man --infodir=/sr/share/info --enable-shared --enable-threads=posix --disable-checking --with-ystem-zlib --enable-__cxa_atexit --host=i386-redhat-linuxThread model: posixgcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)以上显示的就是 Redhat linux 9.0 里自带的 gcc 的版本 3.2.2。下面将以一个实例来说明如何使用 gcc 编译器。例 3-1 能够帮助大家迅速理解 gcc 的工作原理,并将其立即运用到实际的项目开发中去。实例 3-1 hello.c¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬#include int main (int argc,char **argv) { printf(“Hello Linux\n“); }[root@localhost home]# lscl.c student test.c vmware-tools-distrib[root@localhost home]# gcc test.c/usr/lib/gcc/i386-redhat-linux/4.1.1crt1.o: In function `_start :(.text+0 x18): undefined reference to `main collect2: ld 返回 1[root@localhost home]# . /a.outbash: /a.out: 没有那个文件或目录[root@localhost home]# gcc test.c -o test.i/usr/lib/gcc/i386-redhat-linux/4.1.1crt1.o: In function `_start :(.text+0 x18): undefined reference to `main collect2: ld 返回 1[root@localhost home]#Gcc 的警告提示功能 gcc 包含完整的出错检查和警告提示功能,它们可以帮助 Linux 程序员尽快找到错误代码,从而写出更加专业和优美的代码。先来读读例 3-2 所示的程序,这段代码写得很糟糕,仔细检查一下不难挑出如下毛病:main 函数的返回值被声明为 void,但实际上应该是 int; 使用了 GNU 语法扩展,即使用 long long 来声明 64 位整数,仍不符合 ANSI/ISO C 语言标准;main 函数在终止前没有调用 return 语句。 实例 3-2 bad.c¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬#include void main(void){long long int var = 1;printf(“It is not standard C code!\n“);}4.gdb 编辑器test.c#include int func(int n){int sum=0,i;for(i=0; i调用 Linux 的 shell 来执行,环境变量 SHELL 中定义的 Linux 的 shell 将会用来执行。如果 SHELL 没有定义,那就使用 Linux 的标准 shell:/bin/sh(在Windows 中使用 C 或 .)。还有一个 gdb 命令是 make:make 可以在 gdb 中执行 make 命令来重新 build 自己的程序。这个命令等价于 shell make 。 在 gdb 中运行程序当以 gdb 方式启动 gdb 后,gdb 会在 PATH 路径和当前目录中搜索 的源文件。如要确认 gdb 是否读到源文件,可使用 l 或 list 命令,看看 gdb 是否能列出源代码。在 gdb 中,运行程序使用 r 或是 run 命令。程序的运行,有可能需要设置下面四方面的事。程序运行参数set args 可指定运行时参数。如:set args 10 20 30 40 50show args 命令可以查看设置好的运行参数。运行环境path 可设定程序的运行路径。show paths 查看程序的运行路径。set environment varname [=value] 设置环境变量。如:set env USER=hchenshow environment [varname] 查看环境变量。工作目录cd 相当于 shell 的 cd 命令。pwd 显示当前的所在目录。程序的输入输出info terminal 显示程序用到的终端的模式。使用重定向控制程序输出。如:run

linux下c语言创建进程实验报告,linux下的c语言编程实验报告相关推荐

  1. Linux查看系统所有运行进程,如何在Linux系统列出systemd下所有正在运行的服务

    Linux系统提供各种系统服务(如进程管理.登录.syslog.cron等)和网络服务(如远程登录.电子邮件.打印机.Web主机.数据存储.文件传输.域名解析(使用DNS).动态IP地址分配(使用DH ...

  2. linux c语言查看进程是否存在,Linux C语言检查进程是否存在

    使用C语言根据进程名检查进程是否存在,然后重启进程 /* * COPYRIGHT NOTICE * Copyright (C) 2016 HuaHuan Electronics Corporation ...

  3. linux查找用户前三进程_查看 Linux 系统中进程和用户的内存使用情况 | Linux 中国...

    有一些命令可以用来检查 Linux 系统中的内存使用情况,下面是一些更好的命令.-- Sandra Henry-stocker 有许多工具可以查看 Linux 系统中的内存使用情况.一些命令被广泛使用 ...

  4. Linux怎么给命令创建别名,如何在Linux上创建别名和Shell函数 | MOS86

    使用别名和Bash Shell函数创建自己的Linux命令. 驯服重复性任务,截断冗长的进程,并使用您经常使用且难以记住的选项配置标准命令. 别名和Shell脚本是Linux和类似Unix的操作系统中 ...

  5. linux怎么用两个进程传值,关于linux:将变量脚本参数传递给另一个脚本,然后将qsub传递给程序...

    在阅读了大量的bash脚本线程和帮助站点之后,我找不到一个有效的解决方案. 我想把一个变量参数'i'从一个脚本传递到另一个脚本$i,然后qsub它到一个程序"$1".在程序中,我从 ...

  6. c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)

    顺序表的创建需要用到结构体,构造一个结构体来存储数据,顺序表申请的内存是连续的.创建顺序表的思路按照数据的"增删改查来进行编写"下列是顺序表的创建代码 创建头文件: sqlist. ...

  7. c语言创建空顺序表的程序,用C语言编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。...

    #include #include #define maxsize 30 typedef int datatype; typedef struct seqlist{ datatype data[max ...

  8. Linux创建进程必须fork么,Linux - fork() 创建进程

    Linux - fork() 创建进程 Linux - fork() 创建进程 介绍创建进程之前,先简单地介绍一下 Linux 下的进程内存布局. Stack - 所有函数的 local variab ...

  9. linux main是什么进程,从创建进程到进入main函数,发生了什么?

    从创建进程到进入main函数,发生了什么? 从创建进程到进入main函数,发生了什么? 前几天,读者群里有小伙伴提问:从进程创建后,到底是怎么进入我写的main函数的? 今天这篇文章就来聊聊这个话题. ...

  10. windows下创建进程,CreateProcess()详解及用法

    windows下想要创建一个子进程不如linux的fork函数来得方便,通过CreateProcess函数创建一个新的进程,函数的定义如下 [cpp]  view plain copy BOOL Cr ...

最新文章

  1. pandas用read_csv时编码问题解决
  2. ad文件服务器部署,AD 集成 – 配置 ADFS 登陆 - Seafile 服务器用户手册
  3. stm32 web get 参数_纯进口mpv销量排行榜 迈巴赫vs680商务车参数
  4. PHP5.5+Nginx1.9
  5. C++传递数组给函数
  6. perl--CGI编程之Apache服务器安装配置
  7. PHP靶向药,第三代靶向药已成功进入中国肺癌指南
  8. linux移除硬盘命令,在Linux中在线添加及移除SCSI硬盘方法
  9. [转载]什么是打新股? 打新股需要多少成本?打新股存在风险吗?
  10. css中只读,是否可以通过CSS将输入字段设置为只读?
  11. 阿里云域名注册+网站备案
  12. CSS - id选择器 和 类选择器
  13. uni-app checkbox和switch组件checked属性无效的解决方案
  14. java.lang.NullPointterException:
  15. Oracle update 更新数据语法和写法
  16. HTML+CSS+JS实现 ❤️ 科技感的数字时钟特效❤️
  17. lg 传奇手游java_2020年手机游戏角色扮演类和传奇类 排行榜NO.1 小编强势推荐
  18. 解决用户“sa“登录失败。该用户与可信 sql server 连接无关联。
  19. 基于二维灰度图的卷积神经网络故障诊断(tensorflow)
  20. 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图

热门文章

  1. 举例说明计算机网络协议,第二章计算机网络协议与体系结构.ppt
  2. matlab normxcorr2函数,matlab – 以类似于’conv2’的方式获得`normxcorr2`输出的优雅方法 – (删除不需要的边)...
  3. jenkins vue 打包特别慢_Jenkins 自动化部署
  4. springboot整合PageHelper实现分页效果
  5. hashmap 遍历_HashMap面试必问的数据结构相关知识总结
  6. WPF之HierarchicalDataTemplate
  7. ceph luminous 版本 osd掉线处置
  8. 研磨设计模式学习笔记1--简单工厂(SimpleFactory)
  9. JDK8 有关集合部分常用的语法
  10. 剑指offer25 二叉树中和为某一直的路径