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:
Moved post to its own thread - please no "threadjacking"; removed colour formatting; added code tags
/*
* 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)
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)
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)
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
LEARN ABOUT OPENSOLARIS
p2close
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)