/*
* File: cp03.c
* Version: 0.3
* Function:Copy source file data to target file.
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define BUFFERSIZE 4096
#define MODETYPE 0644
void oops( char * s1, char * s2 );
int main( int argc, char * argv[] )
{
int in_fd, out_fd;
int n_chars;
char buf[ BUFFERSIZE ];
/* Check parameters */
if( argc != 3 )
oops( "Error Usage.", "Usage: Command source destination" );
/* Open source file. */
if( ( in_fd = open( argv[1], O_RDONLY ) ) == -1 )
oops( "Read error.", argv[2] );
/* Creat target file */
if( ( out_fd = creat( argv[2], MODETYPE ) ) == -1 )
oops( "Creat error.", argv[2] );
/* Read data from source file to destinnation file */
while( ( n_chars = read( in_fd, buf, BUFFERSIZE ) ) > 0 )
{
/* write data to target file and check chars */
if( (write( out_fd, buf, n_chars ) ) != n_chars)
oops( "Write error.", argv[2] );
}
/* close open file fd */
if( (close( in_fd ) != 0 ) || ( close (out_fd) ) != 0 )
fprintf( stderr, "Close file error." );
}
/* Show error message */
void oops( char * s1, char * s2 )
{
/*
* two parameters
* s1: What went wrong.
* s2: Error message of s2.
*/
fprintf( stderr, "Error: %s", s1 );
perror( s2 );
exit( 1 );
}
重新写cp命令
最新推荐文章于 2023-11-30 11:39:41 发布