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. python基础五之字典

    python数据的可变性 通过数据的可变性,可将数据分为可变数据类型和不可变数据类型. 可变数据类型:list,dict (不可哈希) 不可变数据类型:元祖,bool,int,str (可哈希) py ...

  2. 2018-8-10-win10-uwp-win2d-使用-Path-绘制界面

    title author date CreateTime categories win10 uwp win2d 使用 Path 绘制界面 lindexi 2018-08-10 19:17:19 +08 ...

  3. vue项目安装scss,以及安装scss报错(this.getResolve is not a function)

    1.安装scss: npm install node-sass sass-loader vue-style-loader --save-dev //安装node-sass sass-loader vu ...

  4. MVC,MVP,MVVM基本原理

    MVC,MVP,MVVM基本原理 模式与框架,其诞生就是为了解决日益复杂的事务处理 当同一问题不断出现,人们就会总结细分出相应的问题解决办法 当需求变得庞大的时候,就会出现细分,在细分的过程中就会出现 ...

  5. 2018-11-5-win10-uwp-异步转同步

    title author date CreateTime categories win10 uwp 异步转同步 lindexi 2018-11-05 10:18:40 +0800 2018-2-13 ...

  6. html 中文占位符

    => 普通的英文半角空格   =>   =>   => no-break space (普通的英文半角空格但不换行)   => 中文全角空格 (一个中文宽度)   =&g ...

  7. POJ3237 Tree 树链剖分 边权

    POJ3237 Tree 树链剖分 边权 传送门:http://poj.org/problem?id=3237 题意: n个点的,n-1条边 修改单边边权 将a->b的边权取反 查询a-> ...

  8. 举例理解Hibernate的三种状态(转)

    转自:https://blog.csdn.net/yiguang_820/article/details/79073152 初学Hibernate,了解到Hibernate有三种状态:transien ...

  9. 最全最详细的PHP面试题(带有答案)

    这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 相关推荐: 分享一波腾讯PHP面试题 2019年PHP最新面试题(含答案) ...

  10. 记录nfs的防火墙以及权限问题

    在前面的一篇文章(https://www.cnblogs.com/zyxnhr/p/10660431.html)中,已经介绍了nfs的安装挂载使用,但是存在两个问题 一. 防火墙 在nfs和nfs的守 ...