linux系统程序设计,2个编程题

2024-12-27 02:14:10
推荐回答(2个)
回答1:

第二题:

int mysystem(char* buf, int len)
{
int fd[2];
pid_t pid;
int n, count;
memset(buf, 0, len);
if (pipe(fd) < 0)
return -1;
if ((pid = fork()) < 0)
return -1;
else if (pid > 0)
{
close(fd[1]);
count = 0;
while ((n =read(fd[0], buf + count, len)) > 0 && count < len)
count += n;
close(fd[0]);
printf(“%s”,buf);
if (waitpid(pid, NULL, 0) > 0)
return -1;
}
else
{
close(fd[0]);
if (fd[1] != STDOUT_FILENO)
{
if (dup2(fd[1], STDOUT_FILENO)!= STDOUT_FILENO)
{
return -1;
}
close(fd[1]);
}
if(execl("ls", "ls", (char*)0) == -1)
return -1;
}
return 0;
}

回答2:

这个我还真是不知道,不过你可以询问一下相关的QQ群,也许他们的回答会对你有所启示吧,再有就是依靠网络啊,因为网络上牛人有很多啊!