UNIXプログラミング質問すれ Part2
■ このスレッドは過去ログ倉庫に格納されています
0797796
NGNGこれは勘違いだったような気がしてきました。
やりたいことは下のプログラムのこの部分で、
>// 子プロセス (shell) 出力 → 親プロセス標準出力 に転送
>ssize_t len = read(ufds[1].fd, buf, sizeof(buf));
子プロセスからの出力を全部読み取ったかを確認することです。
ioctlにはこだわりません。何か方法を教えてください。
http://www.hakusan.tsg.ne.jp/tjkawa/pdiary/200306.jsp
while (true) {
ufds[0].fd = 0; ufds[1].fd = master;
ufds[0].events = POLLIN; ufds[1].events = POLLIN;
ufds[0].revents = 0; ufds[0].revents = 0;
int r = poll(&ufds[0], 2, -1);
if (r > 0) {
if (ufds[0].revents & POLLIN) {
// 親プロセス標準入力 → 子プロセス (shell) に転送
ssize_t len = read(ufds[0].fd, buf, sizeof(buf));
if (len > 0) write(ufds[1].fd, buf, len);
} else if (ufds[0].revents) break;
if (ufds[1].revents & POLLIN) {
// 子プロセス (shell) 出力 → 親プロセス標準出力 に転送
ssize_t len = read(ufds[1].fd, buf, sizeof(buf));
if (len > 0) write(1, buf, len);
} else if (ufds[1].revents) break;
以下略
■ このスレッドは過去ログ倉庫に格納されています