Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

UNIX Low-Level I/O

Diskussion: UNIX Low-Level I/O im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi! Da ich es immer besser finde, Low-Level-Funktionen zu benutzen, aber sehr viele System-Programmierer einfach auf die portablen/leichten High-Level-Funtkionen ...

Antwort
Alt 19.06.05, 11:36   #1 (permalink)
 
Registriert seit: 27.01.05
MrNiceGuy Leistung: Facit NTK
Likes: 0
Standard UNIX Low-Level I/O

Anzeige

Hi!
Da ich es immer besser finde, Low-Level-Funktionen zu benutzen, aber sehr viele System-Programmierer einfach auf die portablen/leichten High-Level-Funtkionen benutzen, habe ich mir gedacht ich poste das einfach mal.

Ich bin mir völlig im Klaren, dass die Meisten hier wissen, wie man mit UNIX und Low-Level-Funktionen umgeht, möchte hiermit einfach nur meinen Respekt an das HaBo zeigen.

Ein Beispiel, wie man mit den Low-Level Funktionen von UNIX auf Dateien zugreift.

Code:
/*Programm, welches das Verwenden der Funktion*/
/* write() erläutert.*/
/*Geschrieben von tcr am 21/05/2005*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>

int main(int argc, char **argv)
{
	
	ssize_t size;
	int fd;
	char *str;
	
	umask(0);
	
	if(argc < 2)
	{
		fprintf(stderr, "Benutzung: %s datei_zum_Öffnen\n", *argv);
		return EXIT_FAILURE;
	}

	if(argc < 3)
	{
		str = "Keine Angaben gemacht\n";
	}
	else
		str = argv[2];

	size = strlen(str);

	/*---------------------------------------------------------------------
	Neue datei erzeugen					O_CREAT
	zum Schreiben 						O_WRONLY
	Daten am Ende hinzufügen				O_APPEND
	Zugriffsrechte für dir Datei erteilen			modus
	---------------------------------------------------------------------*/
	
	fd = open(argv[1], O_WRONLY | O_APPEND | O_CREAT, 0755);

	if(fd == -1)
	{
		perror("Fehler bei open()");
		return EXIT_FAILURE;
	}
	
	if(write(fd, str, size) != size)
	{
		perror("Fehler bei write()");
	}
	return EXIT_SUCCESS;
}
MrNiceGuy ist offline   Mit Zitat antworten
Alt 21.06.05, 00:49   #2 (permalink)
Member of Honour
 
Registriert seit: 03.10.01
blueflash Leistung: Facit NTK
Likes: 1
Standard

Ok, sehr hübsch.



Mach ruhig weiter in C unter *nix, da kann man viel lernen.

nachtrag: du wirst, wenn du dein programm testest, unter umständen feststellen, dass die rechte nicht korrekt gesetzt wurden. schau dir mal die umask man page an!
blueflash ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 21.06.05, 13:34   #3 (permalink)
Gulliver
Guest
 
Likes:
Standard

aus der open Manpage
...in which case
the file is created with mode mode as described in chmod(2) and modified
by the process' umask value (see umask(2))....

Wieso meinst Du sind die Rechte falsch gesetzt?
  Mit Zitat antworten
Alt 21.06.05, 19:39   #4 (permalink)
Member of Honour
 
Registriert seit: 03.10.01
blueflash Leistung: Facit NTK
Likes: 1
Standard

Ich sollte nachts keine beiträge mehr ändern.



da steht ja umask(0);

sorry, das hab ich einfach überlesen.
blueflash ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » UNIX Low-Level I/O
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Aufbau von DES(UNIX) und MD5(UNIX) tr!-X Cryptography & Encryption 1 25.08.09 13:35
(Genaue) Unterschiede zwischen UNIX und Unix-Derivaten (zB Linux) acdc Linux/UNIX 3 19.03.09 10:44
Unix > alt acdc Linux/UNIX 2 25.10.07 22:43
was für ein Unix eriksn Linux/UNIX 16 04.12.04 12:36
level 4 7wim4 Off topic-Zone 6 23.07.04 20:35


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61