flock() の代わりに fcntl() を使用できます。
flock()
システムコールであるため、一般的に非同期シグナルセーフです。そのセマンティクスにより、別の方法で実装することが困難になります。 POSIX にまったくないため、POSIX の async-signal-safe 関数のリストにはありません。
flock()
であるため、明示的なロック解除は必要ない可能性があります。 開いているファイルの説明を参照するすべてのファイル記述子が閉じられると、ロックは自動的に解放されます。
printf()
と fprintf()
呼び出しは適切な write()
に置き換える必要があります 呼び出します。 stdio 関数は async-signal-safe 関数のリストになく、多くの場合 async-signal-unsafe です。
abort()
call はおそらく、シグナルをデフォルト アクションに設定し、それを self に再送信することによって置き換えるのが最適です。このようにして、シェルはシグナルによってプログラムが終了したことを認識し、必要に応じてコマンド シーケンスを中止できます。