Cを使って開いている端末を確認しようとしています。端末に「w」と入力すると、端末が4つだけ開いていることがわかります開いた)。しかし、このコードを実行すると、約20のオープンがあることがわかります。これをどうやって解決するのですか?cを使って開いている端末を確認する方法
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#include <time.h>
const char pts[] = "/dev/pts/";
int s1=0;
FILE *fp = NULL;
char *terminal[4];
char* check;
int main(int argc, char *argv[]){
int i;
char strDev[100];
for(i=0; i<100; i++){
sprintf(strDev, "%s%d", pts, i);
printf("Opening %s...\n", strDev); fflush(stdout);
if((fp = fopen(strDev, "w")) == NULL) ;
else{
printf("\tOpened %s\n", strDev); fflush(stdout);
terminal[s1] = strDev;
s1++;
}
}
return 0;
}
ポータブルCではこれを行うことはできません。その標準はそれのための手段を提供しません。システム固有の方法で実行する必要があるため、少なくともオペレーティングシステムを指定する必要があります。 – Dolda2000
記録のために、 'w'コマンドは' utmp'ファイルを使用しています。したがって、あなたがやることと同じようにするには、マンページを参照してください。しかし、これはターミナルが開いているかどうかを確認することとまったく同じことではありません。 – Dolda2000
プログラムは開いている端末の数を確認していますが、開いている端末の数はありません。 –