Hi!
I'm developing an application program by C++ language in the UNIX environment and I would know the name of last file written at a particular path and with a particular prefix.
For instance, I need someting like output of following UNIX pipelined command:
ls -t $PATHFILE/file_prefix_* | head -1
How can I achieve the same result in C++? I tried with the system call:
system( "ls -t $PATHFILE/file_prefix_* | head -1 > tmpfile" );
In this way I saved filename I'm looking for in tmpfile, but I don't think it is a good solution.
Many thanks. Bye,
Paride
You can use readdir() to read a directory. Then use lstat() on each file.
Many thanks! My application is working!
Bye,
Paride
That is definately more reliable than a tmp file, but another solution - just for giggles - would be to use popen on the command and avoid the temp file, reading the output of the ls command directly through the pipe.
Just a thought...popen is not the best solution in this case - given the various shells aliases and things could preclude the ls from functioning as desired - but popen is a nice thing to explore.
It's not the temp file that bothers me. It's the extra processes. First you launch a shell. It reads a command line. It launches a pair of processes. Then you read the temp file.
Now compare that to just reading the directory.
And popen() is not much better.