1
字符串我有以下代碼:閱讀來自管
int pfds[2], pid;
if (socketpair(AF_UNIX, SOCK_STREAM, 0, pfds) < 0) {
goto error;
}
if ((pid = fork()) == -1)
goto error;
if (pid == 0) {
/* child */
close(pfds[1]);
dup2(pfds[0], 1);
close(pfds[0]);
const char *argv[5];
int i = 0;
argv[i++] = "/bin/sh";
argv[i++] = "/sbin/script.sh";
argv[i++] = NULL;
execvp(argv[0], (char **) argv);
exit(ESRCH);
}
close(pfds[0]);
s.stream.string_data = true;
s.stream.notify_read = client_read_cb;
ustream_fd_init(&s, pfds[1]);
腳本返回字符串(印有echo
命令),該標記腳本裝入結束。
如何讀取/sbin/script.sh
返回的字符串?
'dup2(pfds [0],1);'很奇怪。通常情況下,你寫入管道的寫入端,然後從讀取端讀取數據。 (即,你期望看到'dup2(pfds [1],1)') –