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. linux 自旋锁 API 简介

    自旋锁原语要求的包含文件是 <linux/spinlock.h>. 一个实际的锁有类型 spinlock_t. 象任何其他数据结构, 一个 自旋锁必须初始化. 这个初始化可以在编译时完成, ...

  2. Junit测试代码时出现initializationError 错误

    首先代码没有错误,执行Junit测试时出现以上错误.上网查资料发现少了包 从网上下载了一个jar包解决了hamcrest-core-1.3.jar 现在下载包搜索的好多坑,有的网站必须注册才能下载,而 ...

  3. keep-alive及路由渲染

    切换路由的时候,每次切换的时候得重新渲染一遍,这样的话会影响到性能的.此时用<keep-alive>包裹着app里的<router-view>,进行缓存. 如果一个页面涉及到了 ...

  4. 闲来无事写一个jquery计算器,没有进行封装......

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. SpringBoot的四种定时任务

    定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务. 使用这种方式可以让你的程序按照某一个频度执行 ...

  6. Makefile记录

    需要把sum.c编译汇编成可执行程序zzj zzj:sum.o gcc -o zzj sum.osum.o:sum.c gcc -c -o sum.o sum.cclean: rm -rf *.o z ...

  7. layui框架实现多图片手动上传和随表单提交方法

    首先在官方文档并没有手动上传的说明文档,这里手动实现上传原理是:在表单中有三个按钮,分别是上传图片按钮.隐藏上传按钮.表单提交按钮,点击上传图片按钮之后,图片添加在前端但是并没有真正的上传,而是在点击 ...

  8. etcd配置文件详解

    一 示例yml配置文件 # This is the configuration file for the etcd server. # Human-readable name for this mem ...

  9. C语言图形界面常用函数集锦

    (以下函数均应在图形方式初始之后使用(initgraph(a,b)),在win-tc中使用BGI图形程序模板时,其中已经定义有一个initgr函数,在main函数中应在执行initgr函数之后再使用这 ...

  10. Visio高级应用部件

    标注与公式的应用: 插入标注 怎么让标注与图形建立关联:拖动标注的时候坐下角会出现黄色的点 把标准拖动到形状边的时候让黄点进入形状就是建立了关联 然后标注就会随着形状的移动而移动 而且复制和删除也都是 ...