linux下c语⾔创建进程实验报告,linux下的c语⾔编程实验报告
linux下的c语⾔编程实验报告
第五章:Linux 下的 C 语⾔编程姓名:学号:520913080429专业:信息安全 09-04实验内容:1.c 语⾔编程2.vi 编辑器3.gcc 编辑器4.gdb 编辑器5. gdb 中运⾏ Linux 的 shell 程序v 系统变量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 所⽰的程序,这段代码写得很糟糕,仔细检查⼀下不
createprocessa难挑出如下⽑病: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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论