Sponsored Content
Top Forums Programming Difference between cp and mv linux command Post 302424665 by dharshini123 on Wednesday 26th of May 2010 03:18:31 AM
Old 05-26-2010
MySQL Difference between cp and mv linux command

Hi,

I am facing one problem only with mv command not with cp command. I have a test program

Code:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mount.h>
#include <fcntl.h>
#include <errno.h>

int sync_file(char *file)
{
FILE *fp=NULL;
int fd;

printf("file is %s\n",file);
fp = fopen(file, "r");
if(!fp)
return -1;

fd = fileno(fp);
fflush(fp);
fsync(fd);
ioctl (fd, BLKFLSBUF, 0);
fclose(fp);
return 0;

}

int main()
{
int len=0;
FILE *fp = NULL;
char buf[1024];
char *fname = "/etc/test.conf";
char fname_tmp[129] = "";


len = sprintf(buf, "%s\n", "Newly added Line is there");

snprintf(fname_tmp, 128, "%s.tmp", fname);

if( (fp = fopen(fname_tmp,"a")) == NULL )
printf(" ERROR: open(), error - %s\n",strerror(errno));

fprintf(fp,"%s",buf);
fflush(fp);

fsync(fileno(fp));
fclose(fp);
system("cp -f /etc/test.conf.tmp /etc/test.conf");
// system("mv -f /etc/test.conf.tmp /etc/test.conf");
sync_file(fname);
return 0;
}

Here i am opening a tmp file for writing. Then i am copying/moving for original file. Then i do a fflush, fsync(), ioctl() to the original file. Then i run this binary in linux machine(ext2 file system, 2.6.23.5 kernel) after that immediately power off the machine. Then power on machine, the file is disappeared or written data lost or file gets corrupted if i move the tmp file to the original file. And there is a no problem if i copy the tmp file to original file. So i want to know the difference between the cp and mv command. Can you please give me suggestion on it?

Thanks,
Indira

Moderator's Comments:
Mod Comment Moved post to its own thread - please no "threadjacking"; removed colour formatting; added code tags
 

9 More Discussions You Might Find Interesting

1. Programming

Difference in LINUX and SOLARIS

/* * one-way-pipe.c - example of using a pipe to communicate data between a * process and its child process. The parent reads input * from the user, and sends it to the child via a pipe. * The child prints the received data to the... (1 Reply)
Discussion started by: SQ4LIFE
1 Replies

2. UNIX for Dummies Questions & Answers

Difference between UNIX and Linux

OK, I've used various versions of UNIX(Solaris, HPUX, etc..) over the years. Now the organization I work for is leaning towards more Linux based systems(Redhat, Suse, etc..) I do see differences in in comands and how to accomplish basic adminstration, but nothing mind blowing. So, what is it... (5 Replies)
Discussion started by: pbonilla
5 Replies

3. UNIX for Dummies Questions & Answers

su command difference between unix and linux

Hello all the su with -l option is running normal with linux but when i try to run it on unix AIX 5.2.7 it's not working with -l option any help (6 Replies)
Discussion started by: islam.said
6 Replies

4. UNIX for Dummies Questions & Answers

difference between unix and linux

Hi I am new to linux I have dout waht is the difference between UNIX and LINUX Is there any soft for insatallation for UNIX OS Thanks (0 Replies)
Discussion started by: sanjaya
0 Replies

5. Linux

Difference between Windows and Linux

Hi, What is the difference between Linux and Windows? Thanks. (1 Reply)
Discussion started by: billcrosby
1 Replies

6. Linux

What is the difference between Linux and Windows?

Hi, What is the difference between Linux and Windows? Thanks. (5 Replies)
Discussion started by: billcrosby
5 Replies

7. UNIX for Dummies Questions & Answers

Difference between UNIX and Linux

hi experts please tell me the real difference between unix and linux at kernel structure (1 Reply)
Discussion started by: linurag
1 Replies

8. Red Hat

Difference Redhat Linux/RH Enterprise Linux

what is the difference between Redhat Linux and Redhat Enterprise Linux. whereas Redhat linux have Server installation options too. (2 Replies)
Discussion started by: hananabbas
2 Replies

9. UNIX for Dummies Questions & Answers

AIX to Linux command difference

Moving from AIX 6.1 to RHEL 6.6, I have noticed a few command differences. One that has been causing issue is a simple echo command when I have to use it this way -> "echo -e" On the AIX it outputs to "-e" but since RHEL has "-e" as an option for echo and hence it outputs to blank here. All... (3 Replies)
Discussion started by: aster007
3 Replies
p2open(3GEN)					     String Pattern-Matching Library Functions					      p2open(3GEN)

NAME
p2open, p2close - open, close pipes to and from a command SYNOPSIS
cc [ flag ... ] file ... -lgen [ library ... ] #include <libgen.h> int p2open(const char *cmd, FILE *fp[2]); int p2close(FILE *fp[2]); DESCRIPTION
The p2open()gfunction forks and execs a shell running the command line pointed to by cmd. On return, fp[0] points to a FILE pointer to write the command's standard input and fp[1] points to a FILE pointer to read from the command's standard output. In this way the program has control over the input and output of the command. The function returns 0 if successful; otherwise, it returns -1. The p2close() function is used to close the file pointers that p2open() opened. It waits for the process to terminate and returns the process status. It returns 0 if successful; otherwise, it returns -1. RETURN VALUES
A common problem is having too few file descriptors. The p2close() function returns -1 if the two file pointers are not from the same p2open(). EXAMPLES
Example 1 Example of file descriptors. #include <stdio.h> #include <libgen.h> main(argc,argv) int argc; char **argv; { FILE *fp[2]; pid_t pid; char buf[16]; pid=p2open("/usr/bin/cat", fp); if ( pid == -1 ) { fprintf(stderr, "p2open failed "); exit(1); } write(fileno(fp[0]),"This is a test ", 16); if(read(fileno(fp[1]), buf, 16) <=0) fprintf(stderr, "p2open failed "); else write(1, buf, 16); (void)p2close(fp); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |MT-Level |Unsafe | +-----------------------------+-----------------------------+ SEE ALSO
fclose(3C), popen(3C), setbuf(3C), attributes(5) NOTES
Buffered writes on fp[0] can make it appear that the command is not listening. Judiciously placed fflush() calls or unbuffering fp[0] can be a big help; see fclose(3C). Many commands use buffered output when connected to a pipe. That, too, can make it appear as if things are not working. Usage is not the same as for popen(), although it is closely related. SunOS 5.11 29 Dec 1996 p2open(3GEN)
All times are GMT -4. The time now is 01:12 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy