GNU/Linux >> Linux の 問題 >  >> Linux

関数を async-signal-safe にする方法は?

flock() の代わりに fcntl() を使用できます。


flock() システムコールであるため、一般的に非同期シグナルセーフです。そのセマンティクスにより、別の方法で実装することが困難になります。 POSIX にまったくないため、POSIX の async-signal-safe 関数のリストにはありません。

flock() であるため、明示的なロック解除は必要ない可能性があります。 開いているファイルの説明を参照するすべてのファイル記述子が閉じられると、ロックは自動的に解放されます。

printf()fprintf() 呼び出しは適切な write() に置き換える必要があります 呼び出します。 stdio 関数は async-signal-safe 関数のリストになく、多くの場合 async-signal-unsafe です。

abort() call はおそらく、シグナルをデフォルト アクションに設定し、それを self に再送信することによって置き換えるのが最適です。このようにして、シェルはシグナルによってプログラムが終了したことを認識し、必要に応じてコマンド シーケンスを中止できます。


Linux
  1. WordPressパーマリンクをNginxで機能させる方法

  2. Sftpで共有ディレクトリにアクセスできるようにする方法は?

  3. Startxに代替Xinitrcを使用させる方法は?

  1. VPNの作り方

  2. この sed スクリプトを高速化するにはどうすればよいですか?

  3. SVNパッチを作成して適用するには?

  1. Linux VPSでCS:GOサーバーを作成する方法

  2. ファイルをスパースにする方法は?

  3. C++11:関数をエイリアスする方法は?