问题:编写一个程序,它调用uname并输出utsname结构中的所有字段,并将输出与uname(1)命令的输出结构做比较。
我本来以为utsname结构也跟passwd结构一样,也有那三个函数来获取整个结构的内容,但是看了头文件后才发现,头文件里面除了结构体的定义就只有这个uname函数了。
我用逐项输出成员的内容来模仿uname命令,我不知道有没有可以用循环的方式来输出一个结构的内容。
下面给出我的代码:
1 /* 调用uname并输出utename结构中的所有字段 */ 2 #include <sys/utsname.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 #define MAX 200 7 8 int main(void) 9 { 10 struct utsname buf; 11 12 if (uname(&buf) == -1) 13 exit(1); 14 15 printf("system name: %s\n", buf.sysname); 16 printf("nodename: %s\n", buf.nodename); 17 printf("release: %s\n", buf.release); 18 printf("version: %s\n", buf.version); 19 printf("machine: %s\n", buf.machine); 20 printf("domainname: %s\n", buf.__domainname); 21 22 return 0; 23 }
这是跟uname -a 比较的结果:
00
就差了几个X86_64和GNU/Linux,那个domainname是关于网络的我也不太明白。
ps:在网上搜怎么man一个头文件的时候,我以外地发现了vim的两个好命令!1.用gf可以进入头文件查看文件内容;2.用shift+k就可以查看某函数的说明(即man func)
时间: 2024-09-29 06:37:34