在Linux中,filp_open()
函數用于打開一個文件
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
int fd = -1;
struct timeval timeout;
fd_set readfds;
timeout.tv_sec = 5; // 設置超時時間為5秒
timeout.tv_usec = 0;
FD_ZERO(&readfds);
FD_SET(STDIN_FILENO, &readfds);
// 嘗試打開一個文件,同時設置超時
if (select(STDIN_FILENO + 1, &readfds, NULL, NULL, &timeout) == -1) {
perror("select");
exit(EXIT_FAILURE);
} else if (FD_ISSET(STDIN_FILENO, &readfds)) {
// 用戶輸入了文件名,打開文件
fd = open("your_file_path", O_RDONLY);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
} else {
// 超時發生
fprintf(stderr, "Operation timed out\n");
exit(EXIT_FAILURE);
}
// 使用文件...
close(fd);
return 0;
}
在這個示例中,我們使用select()
函數來等待用戶輸入文件名或超時。如果用戶在5秒內沒有輸入文件名,select()
將返回-1,表示超時發生。如果用戶成功輸入文件名,我們將使用open()
函數打開文件。