Meine Aufgabe zu übergeben ist ein C-Programm zu schreiben, das mv-Befehl System zu veranschaulichen Anrufe:Wie Daten in eine Datei von stdin in der Shell
#include<stdio.h>
#include<errno.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<fcntl.h>
#define BUF_SIZE 8192
int main(){
int input_fd,output_fd;
ssize_t ret_in, ret_out; //number of bytes returned by read(), write()
char buffer[BUF_SIZE];
output_fd=open("sss", O_WRONLY | O_CREAT);
if(output_fd==-1){
perror("open");
return 3;
}
while((ret_in=read(stdin, buffer, BUF_SIZE))>0){
ret_out=write (output_fd, buffer,(ssize_t) ret_in);
if(ret_out!=ret_in){
perror("write");
return 4;
}
}
close(output_fd);
input_fd=open("sss", O_RDONLY);
while((ret_in=read(input_fd,buffer, BUF_SIZE))>0)
ret_out=write(stdout, buffer,(ssize_t) ret_in);
close(input_fd);
return 0;
}
Wie dieser Code in der Schale laufen und es passiert Text von stdin? Bitte, gib mir exapmle Daten in eine Datei von stdin in der Schale stdout
-1 (oder STDOUT_FILENO
) und stdin
-0 (oder STDIN_FILENO
) der Weitergabe
Der Code weist Probleme auf, die zu unerwartetem Verhalten führen würden. Ist es die vollständige Quelle? –
ja, aber ich nahm es aus dem Buch und es kann absichtlich Fehler – Stranger
Opening eine Datei zum Schreiben 'O_CREAT' enthalten funktioniert nicht immer, wenn Sie keine Berechtigungen haben, zum Beispiel wird es fehlschlagen,' open() 'würde return '-1' und dann können Sie' errno' überprüfen, um zu überprüfen, warum. Der Code tut das nicht. Was genau erwartest du auch? Die Frage erklärt nicht, was das erwartete Verhalten ist. –