Milan Stephan
Fotografie & IT

Zurück zur SP2 Übersicht

dup2.c

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main(void) {

	// TODO: Fehlerbehandlung
	// TODO: Dateirechte foo.txt

	int fd_devnull = open("/dev/null", O_WRONLY);
	int fd_outfile = open("foo.txt", O_WRONLY | O_CREAT);

	printf("Diese Zeile wird auf stdout geschrieben\n");
	printf("Um die Rechte händisch anzupassen (auf rw-r--r--): chmod 0644 foo.txt\n");



	dup2(fd_devnull, STDOUT_FILENO);

	printf("Das landet auf /dev/null und ist nicht sichtbar!\n");



	dup2(fd_outfile, STDOUT_FILENO);

	printf("Die Zeile wird in die Datei foo.txt geschrieben - ");
	printf("und jetzt wird ein anderes Programm ausgeführt...\n");
	execlp("./printer", "./printer", NULL);
	perror("execlp");
	exit(EXIT_FAILURE);
}