当我构建并运行此程序时:
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main() {
int pipefd[2], pid, n, rc, nr, status;
char *teststring = "Hello World\n", buf[1024];
rc = pipe(pipefd);
if(rc < 0) {
perror("Pipe");
exit(1);
}
pid = fork();
if(pid < 0) {
perror("fork");
exit(1);
}
if (pid == 0) {
close(pipefd[0]);
write(pipefd[1], teststring, strlen(teststring));
close(pipefd[1]);
exit(0);
}
// parent's code
close(pipefd[1]);
n = strlen(teststring);
nr = read(pipefd[0], buf, nr);
rc = write(1, buf, nr);
wait(&status);
printf("Good Work child\n");
return 0;
}
它因“拒绝许可”消息而失败。
我在Elementary OS Freya(Linux)上测试,我看到在Netbeans下运行并从终端运行的相同行为。
问题是什么,我该如何解决?