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. SourceYard 制作源代码包

    本文带大家走进SourceYard开发之旅 在项目开发中,将一个大的项目拆为多个小项目解耦,减少模块之间的耦合.因为如果将代码放在一起,即使有团队的约束,但只要能写出的代码就会有小伙伴写出,很快就发现 ...

  2. H3C 静态路由实现路由备份和负载分担

  3. vue 弹窗时 监听手机返回键关闭弹窗(页面不跳转)

    [注]:  popstate 事件 a.当活动历史记录条目更改时,将触发popstate事件. b.如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对his ...

  4. python 可变参数示例

    练习1:请使用**kw的方式,把可变的所有参数, # 算一字典的value乘积 def fun(**kw): product =1 for k ,v in kw.items(): if isinsta ...

  5. 第二阶段:2.商业需求分析及BRD:6.商业需求文档2

    BRD的三个诉求:1.项目很重要,支持.2.有价值,获得重视,纳入战略规划中.3.需要资源,横向的协调资源.   方法:知道决策层是哪些组成,同时找到合适的决策层. BRD决策分类:1.找资本类(CF ...

  6. 周志华《机器学习》高清电子书pdf分享

    周志华<机器学习>高清电子书pdf下载地址 下载地址1:https://545c.com/file/20525574-415455837 下载地址2: https://pan.baidu. ...

  7. requests库结合selenium库共同完成web自动化和爬虫工作

    我们日常工作中,单纯的HTTP请求,程序员都倾向于使用万能的python Requests库.但大多数场景下,我们的需求页面不是纯静态网页,网页加载过程中伴随有大量的JS文件参与页面的整个渲染过程,且 ...

  8. 20191017-4 alpha week 2/2 Scrum立会报告+燃尽图 03

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9800 小组名称:“组长”组 组长:杨天宇 组员:魏新,罗杨美慧,王歆瑶,徐 ...

  9. 【题解】HDU Homework(倍增)

    [题解]HDU Homework(倍增) 矩阵题一定要多多检查一下是否行列反了... 一百个递推项一定要存101个 说多了都是泪啊 一下午就做了这一道题因为实在是太菜了太久没写这种矩阵的题目... 设 ...

  10. 洛谷$P$3168 任务查询系统 $[CQOI2015]$ 主席树

    正解:主席树 解题报告: 传送门! 首先考虑如果是单点修改,那就是个线段树板子嘛$QwQ$ 然后现在是区间修改,对于区间修改,显然就考虑差分下,就变成单点修改辣$QwQ$ 同时单点查询前$k$小也就变 ...