如何在我的C程序中验证四个终端当前是否打开?
所以我要在开始之前说,这是我班上的一个家庭作业项目。我应该在运行程序之前确定用户打开了四个终端窗口,我必须通过确定是否可以从/dev/pts/以只读方式打开四个终端号缓冲区来完成这一任务。然后我必须保存前四个缓冲区,以便再次打开它们写入终端。我知道如何使用fopen打开文件,但我的问题是,即使不再打开的终端也会显示出来,并且可以访问。我知道要求家庭作业帮助是很不愉快的,但我已经为此工作了几个小时,我不想让它为我写,我只想知道一些方向。如何使用我必须使用的方法检查是否有四个端子打开?这是我的代码,也许你们中的一个可以看到我做错了什么如何在我的C程序中验证四个终端当前是否打开?,c,linux,C,Linux,所以我要在开始之前说,这是我班上的一个家庭作业项目。我应该在运行程序之前确定用户打开了四个终端窗口,我必须通过确定是否可以从/dev/pts/以只读方式打开四个终端号缓冲区来完成这一任务。然后我必须保存前四个缓冲区,以便再次打开它们写入终端。我知道如何使用fopen打开文件,但我的问题是,即使不再打开的终端也会显示出来,并且可以访问。我知道要求家庭作业帮助是很不愉快的,但我已经为此工作了几个小时,我不想让它为我写,我只想知道一些方向。如何使用我必须使用的方法检查是否有四个端子打开?这是我的代码,
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 100
int main(){
int i, ptsNum[4], ptsCount = 0;
FILE *fp;
char ptsName[20];
for(i = 0; i < 20; i++){
// Append the terminal number to the end of the buffer name
sprintf(ptsName, "/dev/pts/%d", i);
// Try to open the file
if((fp = fopen(ptsName, "r")) != NULL){
// Save the terminal number if the buffer exists
ptsNum[ptsCount] = i;
ptsCount++;
fclose(fp);
}
}
return 0;
}
#包括
#包括
#定义MAXLINE 100
int main(){
int i,ptsNum[4],ptscont=0;
文件*fp;
char-ptsName[20];
对于(i=0;i<20;i++){
//将终端号追加到缓冲区名称的末尾
sprintf(ptsName,“/dev/pts/%d”,i);
//尝试打开该文件
如果((fp=fopen(ptsName,“r”)!=NULL){
//如果缓冲区存在,则保存终端号
ptsNum[ptscont]=i;
ptscont++;
fclose(fp);
}
}
返回0;
}
好吧,你试着打开终端,但是一旦你数到它们,你就会丢失它们,所以如果你想打开它们,不要在循环结束时做最后一个fclose(3)
。好吧,你试着打开终端,但是一旦你数到它们,你就会丢失它们,所以如果你想打开它们,不要在循环结束时做最后一个fclose(3)
。你没有问任何问题。我想您需要在这里为/dev/pts
目录设置inotify
。是的,很抱歉,我不太清楚。当我运行上面的代码时,它会存储已打开但不再存在的终端的编号。你会用那个命令发布我的问题的帮助吗?@Henry--请编辑你的问题,而不是添加评论。阅读或只是键入man inotify
,所以我只是将改为(I=0;I<20;I++){
改为for(I=1;I<20;I++){
在运行了gdb之后,我的代码似乎终于起作用了,我不是一个聪明人。你没有问任何问题。我想你需要在这里为/dev/pts
目录设置inotify
。是的,很抱歉,我不是很清楚。当我运行上面的代码时,它会存储已打开但不再使用的终端的号码。你会用这个命令发布我的问题的帮助吗?@Henry——请编辑你的问题,而不是添加注释。阅读或只是键入man inotify
,所以我只是将(I=0;I<20;I++){改为for(I=1;I<20;I++){
,在运行了gdb之后,我的代码似乎终于起作用了,我不是一个聪明人。