我用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;
}
...全文
327 14 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
提高什么的效率,代码执行效率还是说命令发送的效率?

69,382

社区成员

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

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