笔试总结篇(一) : 广州X公司笔试

一.单选题:

Ps : 当时由于去广州路上颠簸很困,导致刚做几分钟题目就睡了一觉。起来发现20分钟过去了。擦擦!

1. 假设磁盘文件foobar.txt 由 6个ASCII 码字符“foobar” 组成,那么程序的输出是什么?

 

 1 #include <stdio.h>
 2 #include <unistd.h>
 3 #include <fcntl.h>
 4 int main(int argc, char const *argv[])
 5 {
 6     int fd1, fd2;
 7     char c;
 8     fd1 = open("foobar.txt", O_RDONLY);
 9     fd2 = open("foobar.txt", O_RDONLY);
10     read(fd1, &c, 1);
11     read(fd2, &c, 1);
12     printf("c=%c\n", c);
13     return 0;
14 }

A.f B.o C.b D.a

我的思路是 先从fd1 指向文件里面读一个字符赋给字符c,之后在从fd2 里面读一个字符赋给字符c,当然是覆盖了,所以是 f 如果第二个read里面读的是fd1 文件描述副,那么答案就应该是 o,因为读了两次。o会覆盖之前的c。

 

2.还是foobar.txt文件,下面程序的输出是什么?

 1 #include <stdio.h>
 2 #include <fcntl.h>
 3 #include <unistd.h>
 4 
 5 int main(int argc, char const *argv[])
 6 {
 7     int fd;
 8     char c;
 9     fd = open("foobar.txt", O_RDONLY);
10     if(fork()==0){
11         read(fd, &c, 1);
12         return 0;
13     }
14     wait(NULL);
15     read(fd, &c, 1);
16     printf("c=%c\n", c);
17     return 0;
18 }

A.f B.o C.b D.a

这道题是 o 因为父亲等孩子退出之后才能进行第二次读操作,毕竟前面有wait 要先等待孩子执行完,父进程才可以执行

 

3.还是foobar.txt 下面程

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值