linux / プログラミングのおぼえがき

慣れない linuxプログラミングをして色々悩んだのでメモ。

* 1分未満間隔での crontab
* wc などの結果を C言語のプログラムから取得
* ファイルの削除、移動
* 空ファイル作成
* ファイルサイズ取得関数
* ファイルをロックする場合の注意

crontab の特殊設定

5分間隔
*/5 * * * * [実行コマンド]

30秒間隔
* * * * * [実行コマンド] & sleep 30; [実行コマンド]

20秒間隔
* * * * * [実行コマンド] & sleep 20; [実行コマンド] & sleep 20; [実行コマンド]

毎分5秒で実行
* * * * * sleep 5;[実行コマンド]


wc などの結果を C言語のプログラムから取得

waitのマクロ「WEXITSTATUS」を使う

#include <sys/wait.h>
int result=system("exit `ps|grep daemon|grep -v grep|wc -l`");
if(result)result=WEXITSTATUS(result);
else result=-1;


ファイルの削除/名前変更

#include <stdio.h>
int remove(const char *filename)
int rename(const char *oldfilename,const char *newfilename)


空ファイル作成

#include <stdio.h>
int fd = open(strFile2, O_WRONLY | O_CREAT|O_TRUNC, 0644);
if (fd == -1){
return -1;//ERROR
}
close(fd);


ファイルサイズ取得関数

struct stat lstat_result;
if (lstat(file, &lstat_result) != 0){
//error
}
lstat_result.st_size


ファイルをロックする場合の注意

flock を実行後待ちプロセスのファイルポインタの位置が不定になることがある。
#include <sys/fcntl.h>
#include <unistd.h>

flock(fd,LOCK_EX);//排他制御
lseek(fd, 0, SEEK_SET);//ファイルポインタを先頭に移動。
    :
flock(fd, LOCK_UN );//ロック解除


関連サイト:
flock(2)
rename(2)
lseek(2)
lstat(2)
crontab(1)
wait(2)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です