私はcで多かれ少なかれuniで作業しています。文字配列からMD5を生成する必要があります。この割り当てでは、パイプを作成してシステム上でmd5
コマンドを実行する必要があることを指定しています。Cでpopen()コマンドに文字列をパイプする方法は?
FILE *in;
extern FILE * popen();
char buff[512];
/* popen creates a pipe so we can read the output
* of the program we are invoking */
char command[260] = "md5 ";
strcat(command, (char*) file->name);
if (!(in = popen(command, "r"))) {
printf("ERROR: failed to open pipe\n");
end(EXIT_FAILURE);
}
は今、これは(ファイルのMD5を取得する必要が割り当ての別の部分のために)完璧に動作しますが、私はそれにどのようにパイプ文字列トレーニングをカント:
私はこれまでのところ得ています。
私が正しく理解していれば、私のような何か実行する必要があります。
、私が思うに、猫を実行し、STDINを通して、そこに「hello」を渡すFILE * file = popen("/bin/cat", "w");
fwrite("hello", 5, file);
pclose(file);
を。これは正しいですか?
あなたが実行しましたその2番目のブロックコード? fwrite( "hello"、sizeof(char)、5、file)を試したと思われるので、fwriteが文字列の要素のサイズである別のパラメータを受け取ることに気づくでしょう。これが実際に機能することを発見しました。このようにしなければならないかどうか、またはpipe()とfork()の呼び出し、パイプの終わりの閉じ、write()とsprintf()を使った情報の送信は別の考えです。 – prelic