これは(おそらく)あなたが望むことをする単純なCアプリケーションです:
#include <stdlib.h>
#include <stdio.h>
#include <sys/file.h>
void main (int argc, char** argv)
{
if (argc != 2)
exit(1);
FILE* fi = fopen(argv[1], "rb+");
FILE* fo = fopen(argv[2], "wb");
if (fi != NULL && fo != NULL && flock(fi, LOCK_EX) == 0)
{
while (feof(fi) == 0)
{
char* buf = malloc(4096);
int bRead = 0;
bRead = fread(buf, 1, 4096, fi);
fwrite(buf, 1, bRead, fo);
}
frewind(fi);
fputc(10, fi);
flock(fi, LOCK_UN);
fclose(fi);
fclose(fo);
}
else exit(1);
exit(0);
}
次のように呼び出します:./a.out oldfile newfile
警告:私は実際にこのコードをテストしていません。重要な作業にこれを使用する前に、必ずいくつかのテストを行ってください。
または、shell-toolを使用して何かを試すこともできます:http flock
://linux.die.net/man/1/flock