クライアントからサーバーにunixコマンドを送信してから結果を返す方法は?

c client-server divide-and-conquer fork pipe
クライアントからサーバーにunixコマンドを送信してから結果を返す方法は?

Unixコマンドをクライアントからサーバーに送信しようとしています。サーバーがコマンドを実行するのを待ってから、クライアントに結果を返します。

私は接続を機能させることができましたが、続行する方法がわかりません。 これは私が進むべき方向でもありますか?

#include
#include
#include
#include

#define MAXLINE 1024

int main(void)
{
  int pfd[2], n
  pid_t pid;

  char buf[MAXLINE]
  char test[] = "pipe test\n";

  if (pipe(pfd) < 0)
    perror("pipe error");

  if ((pid = fork()) < 0)
    perror("fork error");
  else
    if (pid == 0)
    {
      close(pfd[1]);
      n = read(pfd[0], buf, MAXLINE);
      printf("read %d byte: \n", n);
      fflush(stdout);
      write(1, buf, n);
    }
    else
    {
      close(pfd[0]);
      write(pfd[1], test, sizeof(test));
    }
  exit(0);
}

感謝、tyバンドー

  1  0


ベストアンサー

`popen(3)`が必要ですが、信頼できないユーザー入力に基づいてサーバーでコマンドを実行することのセキュリティへの影響に注意してください-これは大きなNo-Noです。

1


タイトルとURLをコピーしました