⑴ c语言休眠函数怎么写
1、sleep()函数:秒级休眠函数
#include <unistd.h >
unsigned int sleep(unsigned int unSeconds);
参数unSeconds表示需要休眠的秒数;
2、usleep()函数:微秒级休眠函数;
#include <unistd.h>
int usleep(useconds_t lMicroSeconds);
参数lMicroSeconds表示要休眠的微秒数;
#ifndef _SUSECONDS_T
#define _SUSECONDS_T
typedef long suseconds_t; /* signed # of microseconds */
#endif /* _SUSECONDS_T */
类型useconds_t定义在头文件/usr/include/sys/types.h中;
3、nanosleep()函数:纳秒级休眠函数;
#include <time.h>
int nanosleep(const struct timespec* rqtp, struct timespec* rmtp);
4、其它休眠函数:
select()、pselect()、poll();等;
select()函数也可以精确到微秒,pselect()函数也可以精确到纳秒。
⑵ c语言 linux 中 poll 的参数
ufds 指向 struct pollfd 数组
nfds 指定 pollfd 数组元素的个数,也就是要监测几个 pollfd
⑶ 两个水壶,一个容量是5升的 另一个容量是 4升的 如何在5升的壶中装入3升的水,C语言实现
#include"stdio.h"
typedefstructtong{
intval;
intmaxval;
}TONG;
//倒空水
#defineEMPTY(A)(A).val=0
//装满
#defineFULL(A)(A).val=(A).maxval
//获取桶中水
intgetTongVal(TONG*a)
{
returna->val;
}
//用A桶的水灌满B桶
voidpollAtoB(TONG*a,TONG*b)
{
//a中的水与b中的水可以装满b桶
if(a->val+b->val>b->maxval){
//a中剩余
a->val=a->val+b->val-b->maxval;
//b装满
FULL(*b);
}else{//不能将b装满
b->val+=a->val;
EMPTY(*a);
}
}
intmain()
{
//初始化两个桶
TONGa5,b4;
a5.val=0;
a5.maxval=5;
b4.val=0;
b4.maxval=4;
//结果
intresult=0;
//向a5中装水
FULL(a5);
//用a5中的水灌满b4桶
pollAtoB(&a5,&b4);
//取a5中剩余的水,看是否达到目的
result=getTongVal(&a5);
printf("当前桶中水:%d ",result);
//循环
while(result!=3){
//清空b4
EMPTY(b4);
//将a中剩余的水倒入b
pollAtoB(&a5,&b4);
//装满a
FULL(a5);
//用a装满b
pollAtoB(&a5,&b4);
//取a中剩余的水
result=getTongVal(&a5);
printf("当前桶中水:%d ",result);
}
printf("完成取水! ");
return0;
}
⑷ C语言问题,求解答
第二个if为假的时候,不会执行POLL_WRITE_BYTE (E0CSR, ControlReg);啊,除非
if (EP_STATUS[0] != EP_STALL) POLL_WRITE_BYTE (E0CSR, ControlReg);后面还有一句
POLL_WRITE_BYTE (E0CSR, ControlReg);
⑸ 求编写一个C语言程序。
/*
前3名的票数:
候选人 1: 14票。
候选人 2: 10票。
候选人 8: 8票。
Press any key to continue
/*
#include<stdio.h>
#defineN21//选举人数
intisLegal(inta[3]){//选票合法性检查
inti;
for(i=0;i<3;++i){
if(a[i]<0||a[0]>9)//未投选举人,作废
return0;
if(a[i]&&a[i]==a[(i+1)%3])//有重复票,作废
return0;
}
return1;//其余的都是有效票
}
voidsort(inta[],intb[],intn){
inti,j,k,t;
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j)
if(a[k]<a[j])k=j;
if(k!=i){
t=a[k];
a[k]=a[i];
a[i]=t;
t=b[k];
b[k]=b[i];
b[i]=t;
}
}
}
intmain(){
intcandidates[11];//10名候选人
intelectors[N][3]={//选举人及投票情况,0表示不投任何人的票
{3,2,1},{1,2,8},{3,2,5},{2,1,8},{3,1,6},{5,3,1},{8,6,9},
{6,8,9},{3,8,9},{5,1,4},{0,1,2},{1,1,2},{3,2,5},{2,2,8},
{5,2,1},{0,0,1},{1,0,2},{8,1,2},{2,1,8},{3,1,4},{8,1,7},
};
inti,j,poll[11]={0};
for(i=1;i<11;++i)candidates[i]=i;
for(i=0;i<N;++i){
if(isLegal(electors[i])){
for(j=0;j<3;++j){
if(electors[i][j])//0表示不投任何人的票
++poll[electors[i][j]];
}
}
}
sort(poll+1,candidates+1,10);
printf("前3名的票数: ");
for(i=1;i<4;++i)
printf("候选人%3d:%d票。 ",candidates[i],poll[i]);
return0;
}
⑹ C语言 epoll和多线程有什么关系
1、epoll处理并发事件,多线程处理并发业务。
2、poll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显着提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level
Triggered)外,还提供了边缘触发(Edge
Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。
⑺ c语言1)按成绩高低排序,输出排序后的成绩;2)统计并输出不及格成绩、人数;3)输出最高分、最低分
根据题目中信息所示:仅输入一科目成绩;人数不作为参数输入;
现在假设:及格线为60分(题目未明确给出)
#include<stdio.h>
//#include< cstring>
//#include<algorithm>
typedef struct {
int grade;
}student;
//选择排序
void selectSort(student stu[10],int n){
for(int i=0;i<=n;i++)
{int k=i;
for(int j=k+1;j<=n;j++){
if(stu[j].grade>stu[k].grade)
{k=j;
}}
int temp=stu[i].grade;
stu[i].grade=stu[k].grade;
stu[k].grade=temp;}}
//数据输出
void display(student stu[10],int n)
{
for(int j=0;j<n;++j)
printf("%d ",stu[j].grade);
printf(" ");}
//数据最大值与最小值
void poll_values(student stu[2],int n){
printf("%d %d",stu[0].grade,stu[n].grade);
printf(" ");
}
int main(){
student stu[10];
student fail[10];
student poll[2];
int n=0;//总人数
int m=0;//不及格人数
while(n<10){
scanf("%d",&stu[n].grade);
if(stu[n].grade<0){
break;
}
++n;}
selectSort(stu,n);
//--------------------------------------
for(int i=0;i<n;i++)
if(stu[i].grade<60){
fail[m]=stu[i];
++m;}
selectSort(fail,m);
display(stu,n);
display(fail,m);
poll[0]=stu[0];
poll[1]=stu[n-1];
display(poll,2);
//poll_values(stu,n)
return 0;
}
运行结果如下
⑻ c语言数组求幂谢谢
#include<stdio.h>
#include<string.h>
int poll(int a,int b)
{
int i,s=1;
for(i=1;i<=b;i++)
s=s*a;
return s;
}//自定义的求幂函数
int main()
{
int i,j,k,l,n,m;
int t;
char a[100];
int poll(int a,int b);
while(scanf("%d %s",&n,a)!=EOF)//输入
{
t=0;
l=strlen(a)-1;
printf("%d\n%s\n",n,a);//将输入输出
for(i=0;a[i]!='\0';i++)//转换过程
{
if(n!=16)
{
t=t+(a[i]-'0')*poll(n,l);
l--;
}
else
{
if(a[i]>='A'&&a[i]<='f')
t=t+(a[i]-'A'+10)*poll(n,l);
else
t=t+(a[i]-'0')*poll(n,l);
l--;
}
}
printf("%d\n",t);//所求的结果
}
}
这个代码没有问题,不懂的话,在问我吧
其中n就是2或8或16,也可以是别的数,而a[]就是与n相对应的进制数
下面是输入输出样例
2 10101010110
2
10101010110
1366
8 777777777
8
777777777
134217727
16 F08F89FAD
16
F08F89FAD
150511533
⑼ c语言 linux 中 poll 的参数
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
#include <sys/poll.h>int poll(struct pollfd *ufds, unsigned int nfds, int timeout);struct pollfd{int fd; /* 想查询的文件描述符. */short int events; /* fd 上,我们感兴趣的事件*/short int revents; /* Types of events that actually occurred. */};请问第二个参数unsigned int nfds的含义,它传递什么信息?
解析:
ufds 指向 struct pollfd 数组
nfds 指定 pollfd 数组元素的个数,也就是要监测几个 pollfd
⑽ 有C语言高手能帮解释下第3行代码的意思吗
声明一个消息代码变量,if (bsp_GetMsg(&ucMsg)) /* 读取消息代码 */
这一句里面有用到。
这个地方是消息驱动的,只有接到消息才会执行相应操作
switch (ucMsg.MsgCode) 就是根据消息的不同类型进行不同的操作