#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main() {
printf("Transactional Shell Command Test.\n");
while(1) {
printf("Queue:");
char input[500];
fgets (input, 500, stdin);
if(strstr(input, "qb-write")){
printf("These are the commands you have queued:\n");
FILE *cmd = popen("cat /home/$USER/.queueBASH_transactions", "r");
char buf[256];
while (fgets(buf, sizeof(buf), cmd) != 0) {
printf("%s\n",buf);
}
pclose(cmd);
}
system(strncat("echo ",strncat(input," >> /home/$USER/.qb_transactions",500),500));
usleep(20000);
}
return 0;
}
我正在尝试为事务性shell创建一个概念,并且我将它输出到用户主目录中的文件中的每个命令。它并没有完全完成,但我一次只做一个部分。当我输入“shell”的任何输入时,它会崩溃。 Codeblocks告诉我“进程返回-1(0xFFFFFFFF)”,然后通常有关运行时的信息。我在这里做错了什么?程序返回-1(0xFFFFFFFF)
不代码块没有一个集成的调试? –
如何呈现特定的程序输入与崩溃可以复制? –
还请注意,您对'strncat()'的特殊用法不能防止缓冲区溢出,您可能认为它有此功能。 –