1. 产生一个进程树,父进程有2个子进程,这2个子进程分别又有2个子进程,每个进程休眠5秒后退出,并在退出前打印自己的进程id号。

 # include<stdio.h>
# include<stdlib.h>
# include<unistd.h>
int main()
{
int reg,i;
for(i=;i<;i++)
{
reg=fork(); if(reg==) break;
}
if(reg==)
{
for(i=;i<;i++)
{
reg=fork();
if(reg==) break;
}
}
sleep();
printf("this is %d process\n", getpid());
}

2.设计一个程序,使用read函数从源文件sc1.dat读取数据,再用write函数写入到目标文件,目标文件名都由键盘输入。另外,输出目标文件的内容。

 #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdio.h>
int main()
{
int fdsrc,fddes,nbytes;
int flags=0_CREAT | 0_TRUNC | 0_WRONLY;
int z;
char buf[],src[],des[];
printf("请输入目标文件名:");
scanf("%s",des);
fdsrc=open("sc1.dat",0_RDONLY);
if(fdsrc<)
{
exit();
}
fddes=open(des,flags,);
if(fddes<)
{
exit();
}
while((nbytes=read(fdsrc,buf,))>) //用read函数从源文件读数据
{
z=write(fddes,buf,nbytes);//用write函数写入到目标文件
if(z<)
{
perror("写目标文件出错");
}
}
close(fdsrc);
close(fddes);
printf("写入目标文件成功!"); //输出目标文件内容
int i;
fddes=open(des,0_RDONLY);
if(fddes<)
{
exit();
}
while((nbytes=read(fddes,buf,))>)
{
for(i=;i<sizeof(buf);i++)
{
printf("%c",buf[i]);
}
}
close(fddes);
exit();
}

3.利用互斥锁pthread_mutex_t编写互斥访问临界资源的多线程程序。程序完成的功能要求:主函数初始化共享内存变量mv(初值为10),创建互斥锁,创建两个线程并等待两个线程执行完毕,之后输出mv的值并释放互斥锁;两个线程分别实现通过获取互斥锁的方式完成对内存变量mv自加10次和自减5次的功能。

 #include<stdlib.h>
#include<stdio.h>
#include<pthread.h>
#include<errno.h> //共享内存变量mv
int mv=;
//创建互斥锁
pthread_mutex_t mutex;
//线程服务程序
static void pthread_funAdd(void);//做加法
static void pthread_funSub(void);//做减法
//主函数
int main(void)
{
//线程标识符
pthread_t pt_Add=; //加操作线程
pthread_t pt_Sub=; //减操作线程
int ret=;
//初始化互斥量
pthread_mutex_init(&mutex,NULL);
//分别创建线程Add、Sub
ret=pthread_create(&pt_Add, //线程标识符指针
NULL, //默认属性
(void*)pthread_funAdd, //运行加操作
NULL); //无参数
if(ret != )
{
perror("pthread_Add_create");
} ret=pthread_create(&pt_Sub, //线程标识符指针
NULL, //默认属性
(void*)pthread_funSub, //运行减操作
NULL); //无参数
if(ret != )
{
perror("pthread_Sub_create");
}
//等待线程Add、Sub结束
pthread_join(pt_Add,NULL);
pthread_join(pt_Sub,NULL);
printf("main program exit!\n");
return ;
} //线程Add的服务程序
static void pthread_funAdd(void)
{
int i=;
pthread_mutex_lock(&mutex); //获取互斥锁
sleep();
printf("This is pthread_Add!\n");
//对共享变量自加10次
for(i=;i<;i++)
{
mv++;
}
printf("pthread_Add 10 to num:%d\n",mv);
pthread_mutex_unlock(&mutex); //释放互斥锁
pthread_exit(NULL);
} //线程Sub的服务程序
static void pthread_funSub(void)
{
int i=;
pthread_mutex_lock(&mutex); //获取互斥锁
sleep();
printf("This is pthread_Sub\n!\n");
//对共享变量自减5次
for(i=;i<;i++)
{
mv--;
}
printf("pthread_Sub 5 to num:%d\n",mv);
pthread_mutex_unlock(&mutex); //释放互斥锁
pthread_exit(NULL);
}

4.编程实现随机产生10个100以内的整数,并输出其中能被7整除的数。并为其编写一个Makefile文件。(两种方法)

 #include<stdio.h>
#include<stdlib.h>
#include<math.h>
//主函数
int main()
{
int i,j;
for(i=;i<;i++)
{
j=+(int)(100.0*rand()/(RAND_MAX+1.0));
if(j%==)
{
printf("%d能被7整除\n");
}
}
} MakeFile文件:
testrand:main.o
gcc main.o -o testrand
main.o:main.c
gcc main.c -o main.o
 #include <stdio.h>
#include <stdlib.h>
#include <time.h> int main()
{
int a[],i;
srand((unsigned int)time(NULL));
for(i=;i<;i++)
{
a[i]=rand()%+;
if(a[i]%==)
printf("ok :%d\n",a[i]);
}
for(i=;i<;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return ;
}

Linux 编程题的更多相关文章

  1. 今天考试的JAVA编程题

    今天早上考了java, 题目感觉还不错, 共四道题,有一道定义类的没啥意思就没列出来. 这三道题目还是不错的,特别是第一道,大一上学期学linux的时候,那时还没学C语言呢,准确的来说,还不知道什么是 ...

  2. 2017 CVTE春招内推专场 C/C++软件开发岗笔试编程题

    先来一波吐槽:选择题全是不定项选择,考的内容在我看来,"反正我接受唔到咯". 比如: 1.Windows操作系统某个通信机制(具体题目忘了,反正答案我选了个熟悉的名词"消 ...

  3. 『编程题全队』"Gugua"事务管理系统项目宣传文案

    一.项目简介 1.项目简介 Gugua是为了解决有事务管理需要的人群的痛苦, 他们需要 一个便利和高效的个人和团体事务管理平台,但是现有的方案并没有很好地解决这些需求,我们有独特的办法是提供跨平台的软 ...

  4. 经典面试编程题--atoi()函数的实现(就是模拟手算,核心代码就一句total = 10 * total + (c - '0'); 但是要注意正负号、溢出等问题)

    一.功能简介 把一个字符串转换成整数 二.linux c库函数实现 /*** *long atol(char *nptr) - Convert string to long * *Purpose: * ...

  5. PTA中如何出Java编程题?

    很多第一次出Java编程题的老师,不知道Java在PTA中是如何处理输入的.写一篇文章供大家参考. 有多种类型输入的编程题: 类型1:固定数量输入 从控制台读入**两个**数,然后将其相加输出. 对于 ...

  6. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  7. C算法编程题系列

    我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...

  8. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

  9. C算法编程题(六)串的处理

    前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...

随机推荐

  1. Java开发之快捷键

    1.显示桌面快捷键:win+D或者右击状态栏,选择显示桌面. 2.UE编辑器:如果想把多行记录合并为一行,使用替换(Ctrl+R),查找里输入^p(代表回车换行符),替换为里什么都不填,替换位置选择所 ...

  2. js基础——对象和数组

    1.Object类型 1)使用new运算符    var box = new Object();===>等同于 var box = Object();(省略new关键字)    box.name ...

  3. 浅谈LOG日志的写法

    文章来源于公司的大牛 1 Log的用途 不管是使用何种编程语言,日志输出几乎无处不再.总结起来,日志大致有以下几种用途: l  问题追踪:通过日志不仅仅包括我们程序的一些bug,也可以在安装配置时,通 ...

  4. H3C 主机名与IP地址映射需求

  5. cookie小总结

    对cookie总结 cookie 在服务器的环境下,对数据的本地存储下面为一个小小的案例 let d= new Date; d.setDate(d.getDate()+7); document.coo ...

  6. linux 内存区

    GFP_DMA 和 GFP_HIGHMEM 都有一个平台相关的角色, 尽管对所有平台它们的使用都 有效. Linux 内核知道最少 3 个内存区: DMA-能够 内存, 普通内存, 和高端内存. 尽管 ...

  7. Docker应用容器引擎

    1.Docker概述 1.1.Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言开发.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

  8. Trie 树的一些题

    Trie 树的一些题 牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不 ...

  9. UE4 中的 C++ 与 蓝图交互

    1.Unreal 引擎提供了两种创建新 Gameplay 元素的方法:C++ 和 蓝图视觉脚本. 通过 C++,程序员构建基础游戏系统:设计师可以基于此系统为场景 / 游戏创建自定义的游戏玩法. 这种 ...

  10. Ubuntu14.04虚拟机下基本操作(typical安装)

    1.打开终端:ctrl+alt+T 2.图形桌面和命令行界面切换:Ctrl+Alt+F1和Ctrl+Alt+F7 3.切换到root用户:激活前,sudo su+回车: 激活后,su+回车.  切换回 ...