Итак, что я пытаюсь сделать, это вызвать системную команду с функцией system()
, а затем, независимо от ее вывода, я хотел бы ее перенести и отправить ее клиенту (сокет).Запустите системную команду с системой() и отправьте вывод
Клиент может отправлять различные сообщения. Это может быть ls
, но это может быть даже qwerty
. Я хотел бы взять вывод и поместить его в функцию write()
в качестве аргумента const void* buffer
. Я видел this topic, но я могу сделать это, чтобы работать. Пока я думал, что это может пойти куда-то из этих строк, но все, что я пробовал, не сработало.
/* buffer is message from the client: ls, ls -l, whatever*/
system(buffer)
fp = popen(buffer, "r");
if(fp == NULL)
printf("Failed ot run command\n");
while(fgets(path, sizeof(path), fp) != NULL) {
//modify output here?
}
pclose(fp);
write(socket_fd, output, strlen(buffer));
Где вы вызываете 'систему()'? –
@ Code-Apprentice прямо над – Lisek
Не похоже, что команда из командной строки также будет именем файла. –