私はexecveコマンドでファイル記述子を渡してから、それを他の側にアクセスする方法を知りたいと思います。私はファイル記述子をリダイレクトするためにdup2を使うことができますが、私はそれを行うことはできません。実際にファイル記述子を子に渡し、子で使用する必要があります。ファイルの記述子を渡す - Execve(タイプキャスト)
親がパイプ+そうのような引数を行います:
int pfd[2];
if(pipe(pfd) == -1)
exitWithError("PIPE FAILED", 1);
char *args_1[] = {"reader", argv[1], (char*) pfd, (char *) 0};
その後、子供がそうのようにフォークの後はexecveを呼び出します。で、その後
close(pfd[1]);
execve("./reader", args_1, NULL);
私がこれまで持って何
私が渡されたパイプ記述子にアクセスしようとしました:
int main(int argc, char* argv[]){
...
write(argv[2][1], buf, read_test);
^^ argv [2]はパイプ記述子を参照する必要があり、[1]はパイプの書き込み終了に進む必要があります。私はここでいくつかタイプキャスティングを行う必要があるということはほぼ肯定的ですが、私が試したことはすべてうまくいかないのです。
- 注:私はこのプログラムの作業バージョンをdup2を使ってstdinとstdoutにリダイレクトしていますが、プロジェクトの指示に従って実際にパイプ記述子を子に渡す必要があります。
何か助けていただければ幸いです。
ありがとうございました。私はまだその取引で実際に何が起こったかを頭に入れようとしています(タイプキャスティングは少し混乱させますが)あなたの投稿は非常に明確で、私は理解していると思います。 – forTruce