0

共有ライブラリ client.so を作成しました。実行すると、ユーザーから文字列を読み取り、関数を呼び出す main() 関数が実行されますch=foo(buffer);

Main.cpp は次のとおりです。

#include<stdio.h>
#include "foo.h"

    int main()
    {
        char buffer[1024];
        char *ch;
        printf("Client : \n");
        printf("Enter sentence to send to the server (press enter)\n");
        fgets(buffer, 1024, stdin);
        ch=foo(buffer);

        return 0;
    }

exec 関数を使用して、c プログラムを実行できます。しかし、phpスクリプトでこれを行うと、ユーザーから文字列を読み取るオプションがありません。

ユーザーがブラウザ自体に文字列を入力できるようにしたいので、その文字列をメイン関数に渡します(おそらくargv、argcを使用しますが、これを行う方法がわかりません)。次に、メイン関数は通常どおり foo(buffer) などを呼び出して続行する必要があります。

foo(buffer) は、php スクリプトで受け取りたい char* ch に格納されている配列を返します。

2 つのオプションがあります。1] ユーザーからテキスト ボックス内の文字列を読み取り、それを main() 関数を持つ共有ライブラリ ファイルに渡します。どちらが実行され、php スクリプトで "ch" が返されます 2] 共有ライブラリ ファイルを実行し (ターミナル ./client で行うように)、実行時に文字列を入力し、プログラム全体を実行します。しかし、これが可能かどうかはわかりません。#include #include "foo.h"

    int main()
    {
        char buffer[1024];
        char *ch;
        printf("Client : \n");
        printf("Enter sentence to send to the server (press enter)\n");
        fgets(buffer, 1024, stdin);
        ch=foo(buffer);

        return 0;
    }

これをどのように達成できるかについて、誰かが私に提案をしてもらえますか!

4

2 に答える 2

0

アクセス許可を設定した後、次の方法で実行すると問題が解決します。

$a=exec('/home/technoworld/Videos/LinSocket/client "critic good"'); 

./client私が間違っていたように与える必要はありません!

client は実行したい実行ファイルで、"critic good" は渡される引数です!

于 2013-07-08T06:50:44.883 に答える