此程序使用多少inode,打开文件表条目和文件描述符

Joe*_*oel 2 c unix operating-system

我正在为我的求职面试复习一些内容,在这个问题上,它询问了这个程序使用了多少inode,打开文件表条目和文件描述符?你能帮帮我吗?

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(int argc, char* argv[]){
  char buffer[3] = "ab";
  int r = open("new.txt", O_RDONLY);
  int r1, r2, pid;
  r1 = dup(r);

  read(r, buffer, 1);

  if((pid=fork())==0) {
    r1 = open("new.txt", O_RDONLY);
  } else{
    waitpid(pid, NULL, 0);
  }

  read(r1, buffer+1, 1);
  printf("%s", buffer);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char* argv[]){
  char buffer[3] = "ab";
  int r = open("new.txt", O_RDONLY);
  int r1, r2, pid;
  r1 = dup(r);

  read(r, buffer, 1);

  if((pid=fork())==0) {
    r1 = open("new.txt", O_RDONLY);
    while (1)
    {
        sleep(1);
    }    
  } else{
    waitpid(pid, NULL, 0);
    while (1)
    {
        sleep(1);
    }
  }

  read(r1, buffer+1, 1);
  printf("%s", buffer);

  return 0;
}

wutiejun@linux-00343520:~/Temp> gcc -o test main.c
wutiejun@linux-00343520:~/Temp> ./test &
[1] 10404
wutiejun@linux-00343520:~/Temp> ls -l /proc/10404/fd
Total 0
lrwx------ 1 wutiejun users 64  June  9 16:33 0 -> /dev/pts/0
lrwx------ 1 wutiejun users 64  June  9 16:33 1 -> /dev/pts/0
lrwx------ 1 wutiejun users 64  June  9 16:33 2 -> /dev/pts/0
l-wx------ 1 wutiejun users 64  June  9 16:33 3 -> /home/wutiejun/Temp/new.txt
l-wx------ 1 wutiejun users 64  June  9 16:33 4 -> /home/wutiejun/Temp/new.txt
wutiejun@linux-00343520:~/Temp> ps -a
  PID TTY          TIME CMD
10404 pts/0    00:00:00 test
10405 pts/0    00:00:00 test
10417 pts/0    00:00:00 ps
wutiejun@linux-00343520:~/Temp> ls -l /proc/10405/fd
Total 0
lrwx------ 1 wutiejun users 64  June  9 16:34 0 -> /dev/pts/0
lrwx------ 1 wutiejun users 64  June  9 16:34 1 -> /dev/pts/0
lrwx------ 1 wutiejun users 64  June  9 16:33 2 -> /dev/pts/0
lr-x------ 1 wutiejun users 64  June  9 16:34 3 -> /home/wutiejun/Temp/new.txt
lr-x------ 1 wutiejun users 64  June  9 16:34 4 -> /home/wutiejun/Temp/new.txt
lr-x------ 1 wutiejun users 64  June  9 16:33 5 -> /home/wutiejun/Temp/new.txt
wutiejun@linux-00343520:~/Temp>
Run Code Online (Sandbox Code Playgroud)

因此,您可以计算打开的文件.我不确定inode数字,我认为这取决于不同的文件系统.