Comment puis-je faire en sorte que l’appel système write () s’imprime à l’écran?

Pour ma classe OS, je suis supposé implémenter le chat de Linux en utilisant uniquement les appels système (pas d’impression)

En lisant cette référence, je l’ai trouvé utilisé pour imprimer dans un fichier. Je suppose que je devrais manipuler le courant.

Dans l’exemple qui apparaît: ofstream outfile ("new.txt",ofstream::binary);

Comment puis-je le faire écrire à l’écran?

EDIT: J’ai réalisé que cette écriture () fait partie de la bibliothèque iostream, est-ce la même chose que l’appel système int write (int fd, char * buf, int size)?

Écrivez dans le descripteur de fichier pour la sortie standard ou l’erreur standard (1 et 2 respectivement).

Un appel système est un service fourni par le kernel Linux. Dans la programmation en C, les fonctions sont définies dans la bibliothèque libc qui fournissent un wrapper pour de nombreux appels système. L’appel à la fonction write() est l’un de ces appels système.

Le premier argument passé à write() est le descripteur de fichier dans lequel écrire. Les constantes symboliques STDERR_FILENO , STDIN_FILENO et STDOUT_FILENO sont respectivement définies sur 2 , 0 et 1 dans unidtd.h . Vous voulez écrire sur STDOUT_FILENO ou STDERR_FILENO .

 const char msg[] = "Hello World!"; write(STDOUT_FILENO, msg, sizeof(msg)-1); 

Vous pouvez également utiliser la fonction syscall() pour effectuer un appel système automatique en spécifiant le numéro de fonction défini dans syscall.h ou unistd.h . En utilisant cette méthode, vous pouvez garantir que vous utilisez uniquement les appels système. Vous trouverez peut-être que le référentiel rapide d’appels système Linux (PDF Link) est utile.

 /* 4 is the system call number for write() */ const char msg[] = "Hello World!"; syscall(4, STDOUT_FILENO, msg, sizeof(msg)-1); 
 #include  /* ... */ const char msg[] = "Hello world"; write( STDOUT_FILENO, msg, sizeof( msg ) - 1 ); 

Le premier argument est le descripteur de fichier pour STDOUT (généralement 1 ), le second est le tampon à écrire, le troisième est la taille du texte dans le tampon ( -1 ne doit pas imprimer le terminateur zéro).

 #define _GNU_SOURCE /* See feature_test_macros(7) */ #include  // For open, close, read, write, fsync #include  //For SYSCALL id __NR_xxx //Method 1 : API write(1,"Writing via API\n",\ strlen("Writing via API\n") ); fsync(1); //Method 2 : Via syscall id const char msg[] = "Hello World! via Syscall\n"; syscall(__NR_write, STDOUT_FILENO, msg, sizeof(msg)-1); syscall(__NR_fsync, STDOUT_FILENO ); // fsync(STDOUT_FILENO); 

Votre référence est incorrecte. Cela fait partie de C ++ et n’a rien à voir avec votre mission. La référence correcte est http://www.opengroup.org/onlinepubs/9699919799/functions/write.html