题目:Linux 文件权限 -rwxr-xr-x 是什么意思,怎样变更文件夹以及下面所有文件的拥有者?
正确答案:A
知识点:
文件权限:
-rwxr-xr-x 表示文件权限:
- 表示文件类型,如果是 d 则表示目录。rwx 表示文件所有者的权限:可读(r)、可写(w)、可执行(x)。r-x 表示文件所有者所在组的用户权限:可读(r)、不可写(-)、可执行(x)。r-x 表示其他用户的权限:可读(r)、不可写(-)、可执行(x)。变更文件拥有者:
chown 命令用于更改文件或目录的所有者。chown [-R] [用户名称] [文件或目录]:-R 选项表示递归地更改目录及其子目录下的所有文件和子目录的所有者。示例:
file.txt,其权限为 -rwxr-xr-x,表示属主有读、写、执行权限,属组用户和其他用户只有读、执行权限。/myfolder 及其所有子文件和子目录的所有者为 newuser,可以使用命令:chown -R newuser /myfolder
题目:假如你想计划让系统自动在每个月的第一天早上4点钟执行一个维护工作,以下哪个 cron 是正确的?
正确答案:A
知识点:
分钟 小时 日 月 星期 命令。* 表示任意值。- 表示范围。, 表示列表中的任意值。解析:
00 4 1 1-12 * /maintenance.pl 表示每月第一天的 04:00 执行 /maintenance.pl。
00 表示分钟,即 00 分钟。4 表示小时,即 04:00。1 表示日期,即每月的第一天。1-12 表示月份,从 1 月到 12 月。* 表示星期,即每周的每一天。/maintenance.pl 表示要执行的命令或脚本。示例:
/etc/crontab 或用户家目录下的 .crontab 文件添加如下行:00 4 1 1-12 * /maintenance.pl
题目:Linux 的系统调用是指?
正确答案:D
知识点:
示例:
open、close、read、write 等。open 系统调用,然后内核负责执行打开文件的实际操作。题目:批量删除当前目录下后缀名为 .c 的文件。如 a.c、b.c。
正确答案:AB
知识点:
删除文件:
rm 命令用于删除文件。*.c 用于匹配所有以 .c 结尾的文件。使用 find 命令:
find 命令用于查找文件。-maxdepth 选项用于限制搜索的最大深度。xargs 命令用于将输入转化为命令行参数。示例:
rm 命令删除所有 .c 文件:rm *.c
find 命令结合 xargs 删除所有 .c 文件:find . -name "*.c" -maxdepth 1 | xargs rm
题目:在 RHEL5 系统中,小王希望将他执行 ls 命令的输出结果保存在当前目录下文件 output.ls 中,以供日后进行分析和使用,但要求不覆盖原文件的内容,他应该使用的命令是()。
正确答案:B
知识点:
>:将命令的标准输出重定向到指定文件。如果文件存在,则会被覆盖。>>:将命令的标准输出追加到指定文件。如果文件不存在,则创建新文件。解析:
ls > output.ls:会将 ls 命令的输出重定向到 output.ls 文件中,如果 output.ls 文件已存在,则会被覆盖。ls >> output.ls:会将 ls 命令的输出追加到 output.ls 文件中,如果 output.ls 文件已存在,则不会被覆盖,而是将新的输出内容追加到文件末尾。示例:
output.ls 文件已经存在并且内容为:file1
file2
ls >> output.ls 命令后,假设当前目录下还有 file3 和 file4,则 output.ls 文件内容变为:file1
file2
file3
file4
题目:在 Linux 中,对 file.sh 文件执行 #chmod 645 file.sh 中,该文件的权限是()。
正确答案:D
知识点:
645 表示权限:
6:属主权限:读(4) + 写(2) + 无执行权限(0)4:属组权限:读(4) + 无写权限(0) + 无执行权限(0)5:其他用户权限:读(4) + 无写权限(0) + 执行(1)解析:
645 对应的权限为 -rw-r--r-x示例:
chmod 645 file.sh:设置 file.sh 的权限为 -rw-r--r-x。
题目:在 Linux 中,当我们用 ls -al 命令列出当前目录下面的文件列表,哪个文件是符号连接文件()。
正确答案:D
知识点:
-:普通文件。d:目录。l:符号链接文件(symbolic link)。解析:
ls -al 输出中会以 l 开头。lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng- peng.yan1 表示这是一个符号链接文件。示例:
ls -al 输出:lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng- peng.yan1
l 表示这是一个符号链接文件。题目:内核不包括的子系统是 。
正确答案:D
知识点:
解析:
示例:
题目:关于 Linux 系统上同一个程序的多个进程实例共享一个 TCP 监听端口的说法,哪个不正确?
正确答案:D
知识点:
SO_REUSEPORT 选项。fork 子进程共享使用。解析:
SO_REUSEPORT 选项,然后绑定同一个地址和端口。fork 子进程共享使用。SO_REUSEPORT 选项可以让多个进程共享同一个端口,并且每个进程都能接收到数据。示例:
SO_REUSEPORT 选项的示例:int sockfd;
struct sockaddr_in servaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
int optval = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(8080);
bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
listen(sockfd, 5);
描述
牛牛从键盘输入一个长度为 n 的数组,问你能否用这个数组组成一个链表,并顺序输出链表每个节点的值。
输入描述:
第一行输入一个正整数 n ,表示数组的长度
输出描述:
制作一个链表然后输出这个链表的值
示例1
输入:4
5 4 2 1
输出:5 4 2 1
说明:请实现链表后再遍历输出结果!
答案:
#include
#include
// 定义链表节点结构体
typedef struct Node {
int value; // 节点值
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建一个新的节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
fprintf(stderr, "Memory allocation failed.\n");
exit(EXIT_FAILURE);
}
newNode->value = value;
newNode->next = NULL;
return newNode;
}
// 将节点插入到链表尾部
void insertTail(Node** head, int value) {
Node* newNode = createNode(value);
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 遍历并打印链表
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d ", current->value);
current = current->next;
}
printf("\n");
}
// 释放链表内存
void freeList(Node* head) {
Node* current = head;
while (current != NULL) {
Node* temp = current;
current = current->next;
free(temp);
}
}
int main() {
int n;
printf("请输入数组长度 n: ");
scanf("%d", &n);
if (n <= 0) {
printf("数组长度必须大于0。\n");
return 1;
}
Node* head = NULL; // 初始化为空链表
printf("请输入 %d 个整数:\n", n);
for (int i = 0; i < n; ++i) {
int value;
scanf("%d", &value);
insertTail(&head, value);
}
// 输出链表
printList(head);
// 释放链表占用的内存
freeList(head);
return 0;
}