第1次作业
1.编写一个简单的c语言程序:输出两行文字“Linux下的c也不是太难嘛!“,在Linux下编辑、编译、运行。
2.编写一个简单的c语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编辑器得到它的汇编程序文件。
3.用gdb调试器调试上面第2题的程序,查看程序执行每一步变量的值,熟悉gdb的使用流程。
4.编写一个c语言程序:打印输出所有“水仙花数“,用gdb调试程序(给出步骤,至少十步以上)所谓”水仙花数“是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1^3+5^3+3^3
第2次作业
1.编写一个简单的C语言程序:函数int input(int a[ ],int n)用于输入一个有n个元素的整型数组,void output(int b[],int n),函数int sum(int a[],int n)用于数组求和,在main函数中一次调用函数input、output、sum。
2.编写一个简单的c语言程序:用随机数函数产生两个整数型,根据输入的字符‘+’、‘-’、‘*’、‘/’做算术运算。
3.编写一个程序,求2-n间的素数,n由键盘输入,循环变量分别从2到n,2到(int)sqrt(n),分别测出两个循环的所用时间。
4.输入一个整型数组,再进行排序,然后键盘输入一个整数,用二分法进行查。
第3次作业
1.进程的启动方式有哪些?
答:手工启动和调度启动,手工启动也分为前台启动和后台启动
2. execve函数的应用,要在程序执行时设定环境变量,路径为tmp,用户为liu,执行命令env时把这些环境变量传递给系统。在这一函数中,参数e表示可传递新进程环境变量,参数v表示把传递的参数(含命令)为构造指针数组,文件查需给出路径。命令env在“/bin”目录下。把环境变量设定为:
        char *envp[ ] = {“PATH = /tmp”,”USER = liu”,NULL}
        参数的构造指针数组为:
        char *arg[ ] = {“env”,NULL};
        因而此函数的调用形式为:
        execve(“/bin/env”,”env”,envp);
        请编写这一程序进行调试。printf输出格式linux
3.编写一个后台检查邮件的程序,这个程序每隔一个指定的时间会去检查邮箱,如果发现有邮件了,会不断地通过机箱上的小喇叭来发出声音报警(Linux的默认个人邮箱地址是/var/spoolmail用户的登录名)。
第4次作业
1.设计一个程序,要求程序运行后进入一个无限循环,当用户按下中断键(Ctrl+Z)时,进入程序自定义信号处理函数,当用户再次按下中断键(Ctrl+Z)后,结束程序运行。
2.设计两个程序,要求用命名管道FIFO实现简单的文本文件,或图片文件的传输功能。
3.调试下列程序,程序实现信息传送功能。其中信息传递通过系统V共享内存实现。一段输入,另一端输出。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<linux/shm.h>
int main()
{
        int shm_id;
        char *viraddr;
        char buffer[BUFSIZE];
        shm_id=shmget(1234,BUFSIZE,0666|IPC_CREAT);
        viraddr=(char*)shmat(shm_id,0,0);
        while(1)
        {
        puts("Please input your text:");
        fgets(buffer,BUFSIZ,stdin);
        stract(viraddr,buffer);
        if(strncmp(buffer,"end",3)==0)  break;
        }
        if(shmdt(viraddr)==-1)
        perror("Shmdt error!");
        exit(0);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<linux/shm.h>
int main()
{        int shm_id:
        char *viraddr;
        shm_id=shmget(1234,BUFSIZ,0666|IPC_CREAT);
        viraddr=(char*)shmat(shm_id,0,0);
        printf("Your text is :\n%s",viraddr);
        if(shmdt(viraddr)==-1)
                perrror("Shmdt error!");
                shmctl(shm_id,IPC_RMID,0);
        exit(0);}