Ich versuche zu überprüfen, welche Terminals mit C geöffnet sind. Wenn ich "w" in das Terminal eingibt, zeigt es, dass nur 4 Terminals geöffnet sind (das ist tatsächlich, wie viele Terminals ich habe öffnen). Allerdings, wenn ich diesen Code ausführe, sagt es mir, dass es etwa 20 offen sind. Wie behebe ich das?Wie überprüft man, welche Klemmen offen sind mit 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;
}
Sie können dies nicht mit tragbaren C; Der Standard bietet keine Mittel dafür. Es muss auf eine systemspezifische Art und Weise durchgeführt werden, so dass Sie zumindest Ihr Betriebssystem angeben müssen. – Dolda2000
Für den Datensatz verwendet der 'w'-Befehl die' utmp'-Datei. Wenn Sie also das Gleiche tun möchten, was Sie tun, lesen Sie die Hilfeseite. Das ist nicht das Gleiche, als zu prüfen, welche Terminals offen sind. – Dolda2000
Ihr Programm überprüft, wie viele Terminals es öffnen kann, nicht welche bereits geöffnet sind. –