Я работал над обратной оболочкой (не для злонамеренного использования) и начал изучать, как использовать функцию popen и получать вывод с использованием stdout. Я начал тестировать его, и он работал нормально, пока не попробовал использовать команду терминала "ls". Может ли кто-нибудь указать (что я предполагаю) на мою ошибку и показать, как ее исправить?
Вот код для программы C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
while (1){
char* command = (char *) malloc(15*sizeof(char));
char* output = (char *) malloc(2048);
printf(">> ");
scanf("%s", command);
FILE* cmd = popen(command, "r");
fputs(output, stdout);
pclose(cmd);
if (strlen(output) != 0){
printf("\n%s\n", output);
}
}
}
и здесь код для ввода, который я предоставил программе, и его результат:
>> cd /Users/
sh: /Users/: is a directory //output from previous command
>> >> ls //also why did the program print '>>' twice?
>>
Другой вопрос: почему программа напечатала >>
дважды?