gpt4 book ai didi

c - 是什么导致该程序无法可靠地执行

转载 作者:行者123 更新时间:2023-11-30 20:52:26 24 4
gpt4 key购买 nike

我最近编写了一个程序,该程序应该采用两个环境变量,将它们插入到一个字符串中,然后将字符串发送到popen,并且大多数时候它工作正常,但由于某种原因它会随机不执行每个如此频繁,所以我只是想知道是否有人看到我正在犯的任何可能的错误或错误?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[], char *envp[]) {

char *output;
char *ccode;
char *command;
char *log;

command = malloc(1024);
log = malloc(1024);
const char *parg = getenv("MCEXEC_ARGS");
const char *pname = getenv("MCEXEC_PLAYERNAME");

if(strcmp(parg,"")==0) {
output = "Usage: /staff <message>";
printf( "%s\n", output );
return 0;
}

freopen("/dev/null","w",stdout);

if (argv[1] == NULL) {
snprintf(command, 1024,
"/home/minecraft/remoteclient01a.py 'sendmsgtogroup staff §f(§bSTAFF§f) <%s§f> %s'",
pname, parg);
snprintf(log, 1024,
"/home/minecraft/remoteclient01a.py 'savetolog info staffmsg: <%s> %s'",
pname, parg);
}
else if (strcmp(argv[1],"me")==0) {
snprintf(command, 1024,
"/home/minecraft/remoteclient01a.py 'sendmsgtogroup staff §f(§bSTAFF§f) * %s§f %s'",
pname, parg);
snprintf(log, 1024,
"/home/minecraft/remoteclient01a.py 'savetolog info staffmsg: * %s %s'",
pname, parg);
}

popen(command, "w");
popen(log, "w");

free(command);
free(log);

return 0;
}

最佳答案

嗯...

  • 您没有检查 malloc() 是否成功。
  • 您没有处理环境变量可能不存在的情况。
  • 您正在对可能为 NULL 的指针调用 strcmp();这可能会杀死你的程序。
  • 您没有检查文件打开是否成功。
  • 命令字符串中有奇怪的 § 字符,不确定这些字符是否是有意的。
  • 您没有检查 popen() 是否成功。
  • 我认为您对 popen() 的使用没有意义;管道一旦打开就不再使用。

关于c - 是什么导致该程序无法可靠地执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com