《操作系统》的实验代码。
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

34 行
698 B

  1. #include <ulib.h>
  2. #include <unistd.h>
  3. #include <file.h>
  4. #include <stat.h>
  5. int main(int argc, char *argv[]);
  6. static int
  7. initfd(int fd2, const char *path, uint32_t open_flags) {
  8. int fd1, ret;
  9. if ((fd1 = open(path, open_flags)) < 0) {
  10. return fd1;
  11. }
  12. if (fd1 != fd2) {
  13. close(fd2);
  14. ret = dup2(fd1, fd2);
  15. close(fd1);
  16. }
  17. return ret;
  18. }
  19. void
  20. umain(int argc, char *argv[]) {
  21. int fd;
  22. if ((fd = initfd(0, "stdin:", O_RDONLY)) < 0) {
  23. warn("open <stdin> failed: %e.\n", fd);
  24. }
  25. if ((fd = initfd(1, "stdout:", O_WRONLY)) < 0) {
  26. warn("open <stdout> failed: %e.\n", fd);
  27. }
  28. int ret = main(argc, argv);
  29. exit(ret);
  30. }