2011-07-07 8 views
1

クライアントからサーバにunixコマンドを送信しようとすると、サーバがそれを実行するのを待ってから、結果をクライアントに返します。クライアントからサーバーにunixコマンドを送信して結果を返す方法はありますか?

iveは接続が正常に動作するように管理しましたが、続行する方法はわかりません。これは私が行くはずの方向さえありますか?

#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 

#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 坂東

+0

クライアントとサーバーが同じボックス内にある場合のみ、パイプを使用できます。それ以外の場合はTCP/IPになります。 C.f。 'man 7 ip'、' man 7 tcp'です。 –

答えて

1

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

+0

私は学校のプロジェクトとしてこれをやる必要があります – Bando

関連する問題