我用C写了一个程序在Linux系统执行,怎么样才能提高效率?

爱韩 2012-01-09 03:17:31
执行getCommand 函数获得命令,如果命令正确就发出去,如果没发送成功就每隔一段时间再发过去。如果发送成功,则每隔一段时间重新获得新的command命令,和上次的进行比较,如果不相同就再发过去。
怎么样提高效率??

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <sys/types.h>
#include <net/if.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <linux/sockios.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
#include <unistd.h>

/*
* 把字符串中的所有字符转换成小写字母
*/
void getLower(char *upper)
{
int i;
for(i = 0; upper[i] != '\0'; i++)
upper[i] = tolower(upper[i]);
}

int getCommand(char *comm)
{
//获得 comm,成功返回 1 ,else 返回 0
}

int main()
{
char command[150] = "";
char temp[150] = "";
int flag = 1, result = 0;

while(1)
{
result = getCommand(command);
printf("%s\n", command);
if(result == 1)
{
if(flag == 0)
{
if(strcmp(temp, command) != 0)
{
flag = system(command);
if(flag == 0)
strcpy(temp, command);
}
}
else
{
flag = system(command);
if(flag == 0)
strcpy(temp, command);
}
}

sleep(60);
}

return 0;
}
...全文
333 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-01-10
  • 打赏
  • 举报
回复
“当前是应该优先重发上次失败的命令;还是应该优先发送刚来的新命令?”
这是一个两难问题。
个人意见:解决这个问题只能靠人脑,不能靠电脑。
jialejiahi 2012-01-10
  • 打赏
  • 举报
回复
蹩脚的设计任何优化都没有意义。
设计良好的代码,能优化的空间通常都比较小。
爱韩 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhao4zhong1 的回复:]

引用 6 楼 sunxiaoyu121 的回复:
引用 5 楼 zhao4zhong1 的回复:

一条命令发送不成功最多三次,放弃重新发送本条命令。


很多次发送不成功时, 是终止发送吗? 但是 我还是需要把这条命令执行成功

夸张点说,你去年发送不成功的命令今年还要不要重发?
[/Quote]

只重发 新的命令
viktor 2012-01-10
  • 打赏
  • 举报
回复
你发送的是什么命令?如果是system("pause"); 或者 system("ls -l")一类的shell命令,应该会发送成功的,不需要判断。
AnYidan 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sunxiaoyu121 的回复:]

引用 5 楼 zhao4zhong1 的回复:

一条命令发送不成功最多三次,放弃重新发送本条命令。


很多次发送不成功时, 是终止发送吗? 但是 我还是需要把这条命令执行成功
[/Quote]
sleep 的时间随发送不成功的次数递增(你可以任选不同的曲线)
爱韩 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhao4zhong1 的回复:]

引用 6 楼 sunxiaoyu121 的回复:
引用 5 楼 zhao4zhong1 的回复:

一条命令发送不成功最多三次,放弃重新发送本条命令。


很多次发送不成功时, 是终止发送吗? 但是 我还是需要把这条命令执行成功

夸张点说,你去年发送不成功的命令今年还要不要重发?
[/Quote]

getcommand函数就是获得当前要发送的命令,因为命令可能会变的,要是发送成功了,就每次检查命令是否更新了,更新了就再发过去。 没发送成功,就等待一段时间,接着发送
赵4老师 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sunxiaoyu121 的回复:]
引用 5 楼 zhao4zhong1 的回复:

一条命令发送不成功最多三次,放弃重新发送本条命令。


很多次发送不成功时, 是终止发送吗? 但是 我还是需要把这条命令执行成功
[/Quote]
夸张点说,你去年发送不成功的命令今年还要不要重发?
gqjjqg 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunxiaoyu121 的回复:]
引用 1 楼 gqjjqg 的回复:

提高什么的效率,代码执行效率还是说命令发送的效率?


代码的执行效率, 循环执行代码的时候,最好不要消耗系统太多的内存, 如果代码一直执行的话, 不会造成系统死机。。
[/Quote]

说代码执行效率,循环里都是库方法,getcommand里面代码有没有,能优化的只有逻辑咯,按需求分析,找最合适的逻辑
爱韩 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhao4zhong1 的回复:]

一条命令发送不成功最多三次,放弃重新发送本条命令。
[/Quote]

很多次发送不成功时, 是终止发送吗? 但是 我还是需要把这条命令执行成功
赵4老师 2012-01-09
  • 打赏
  • 举报
回复
一条命令发送不成功最多三次,放弃重新发送本条命令。
Defonds 2012-01-09
  • 打赏
  • 举报
回复
推敲下
spark_lx 2012-01-09
  • 打赏
  • 举报
回复
定时器 信号量
爱韩 2012-01-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gqjjqg 的回复:]

提高什么的效率,代码执行效率还是说命令发送的效率?
[/Quote]

代码的执行效率, 循环执行代码的时候,最好不要消耗系统太多的内存, 如果代码一直执行的话, 不会造成系统死机。。
gqjjqg 2012-01-09
  • 打赏
  • 举报
回复
提高什么的效率,代码执行效率还是说命令发送的效率?
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧