Linux 编程题
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 编程题的更多相关文章
- 今天考试的JAVA编程题
今天早上考了java, 题目感觉还不错, 共四道题,有一道定义类的没啥意思就没列出来. 这三道题目还是不错的,特别是第一道,大一上学期学linux的时候,那时还没学C语言呢,准确的来说,还不知道什么是 ...
- 2017 CVTE春招内推专场 C/C++软件开发岗笔试编程题
先来一波吐槽:选择题全是不定项选择,考的内容在我看来,"反正我接受唔到咯". 比如: 1.Windows操作系统某个通信机制(具体题目忘了,反正答案我选了个熟悉的名词"消 ...
- 『编程题全队』"Gugua"事务管理系统项目宣传文案
一.项目简介 1.项目简介 Gugua是为了解决有事务管理需要的人群的痛苦, 他们需要 一个便利和高效的个人和团体事务管理平台,但是现有的方案并没有很好地解决这些需求,我们有独特的办法是提供跨平台的软 ...
- 经典面试编程题--atoi()函数的实现(就是模拟手算,核心代码就一句total = 10 * total + (c - '0'); 但是要注意正负号、溢出等问题)
一.功能简介 把一个字符串转换成整数 二.linux c库函数实现 /*** *long atol(char *nptr) - Convert string to long * *Purpose: * ...
- PTA中如何出Java编程题?
很多第一次出Java编程题的老师,不知道Java在PTA中是如何处理输入的.写一篇文章供大家参考. 有多种类型输入的编程题: 类型1:固定数量输入 从控制台读入**两个**数,然后将其相加输出. 对于 ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- C算法编程题系列
我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...
- C算法编程题(七)购物
前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...
- C算法编程题(六)串的处理
前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...
随机推荐
- 基于AutoIt3的打印机安装
#Region ;**** 编译指令由 AutoIt3Wrapper 选项编译窗口创建 **** #AutoIt3Wrapper_Icon=favicon.ico #AutoIt3Wrapper_Co ...
- MySQL面试(二)
1.为什么索引遵循最左匹配原则? 当B+树的数据项是符合的数据结构,比如(name,age,sex)的时候,B+树是按照从左到右的顺序建立搜索树的.比如当(张三,20,F)这样的数据来检索的时候,b+ ...
- Linux 内核/sbin/hotplug 工具
如同本章中前面提过的, 无论何时一个设备从系统中增删, 都产生一个"热插拔事件". 这 意味着内核调用用户空间程序 /sbin/hotplug. 这个程序典型地是一个非常小的 ba ...
- CentOS服务器安装mysql
1.配置YUM源 下载mysql源安装包 [root@localhost~]#wget http://dev.mysql.com/get/mysql57-community-release-el7-8 ...
- javascript修改css样式表
//创建var sheet=document.createElement('style');document.bodt.appendChild(sheet);sheet.styleSheet.cssT ...
- JS求数组最大值常用方法
第一种方法: 循环数组 let ary = [1,2,22,3,99,100],maxNum = ary[0] function getMaxNum(ary){ for(let i = 1,len = ...
- CodeForce - 1189 D1. Add on a Tree (思维题)
Note that this is the first problem of the two similar problems. You can hack this problem only if y ...
- Trie 树的一些题
Trie 树的一些题 牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不 ...
- sql查询分类和所有子类
select * from [JianDu].[dbo].[ZuZhiJiGou] where id = 64 --查询节点 union allSELECT TOP 1000 a.* FROM [Ji ...
- 彩票历史记录分析工具 -- 通过实例学习wpf开发
前言 虽然本人对彩票不感兴趣,仍然有不少人对此情有独钟.他们花大量时间精力去分析彩票的历史记录,企图发现规律,为下一次投注做指导,希望“赢的“”概率增大.不管研究历史记录是否有意义,我用软件实现了对彩 ...