我最近做了一个程序,该程序应该接受两个环境变量,将它们插入到一个字符串中,然后将该字符串发送给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;
}
您能否包含有关发生什么事以及什么排除程序不能正确执行的任何细节? –
“但由于某种原因,它会随机不会每隔一段时间执行一次” - 它以什么方式“不执行”? – ArjunShankar
你没有处理来自系统调用的任何错误代码,所以你甚至可以期望调试它。 –