1
を使用してCでのopensslのstdioのへの書き込み私はこのようにOpenSSLにいくつかのデータを渡すためにしようとしています:はパイプ
int fd[2];
char buff[MAXBUFF];
pid_t childpid;
pipe(fd);
childpid = fork();
if (childpid == 0){
dup2(0, fd[0]);
close(fd[1]);
execlp("openssl", "s_client", "-connect", "imap.gmail.com:993", "-crlf", NULL);
}
else {
close(fd[0]);
dosomething(buff);
write(fd[1], buff, strlen(buff) + 1);
sleep(4);
}
しかし、OpenSSLがバフからデータを取得しないように、それはいくつかの入力のために私を待ってハングアップするようです思う。 私はbashの
a.shと同じことを行う場合は、次の
.
.
.
echo $data
sleep 3
.
.
.
b.sh:
openssl s_client -connect imap.gmail.com:993 -crlf
./a.sh | ./b.sh
すべて正常です。
パイプをフラッシュできますか? – orion78fr
バフに改行が含まれていますか? – Ctx
@ orion78fr親プロセスでstdoutにfd [1]を複製しようとしましたが、printfとfflushを使ってパイプに書き込むと、再び動作しません。 – vacso