私は(非)アーカイブツールを作成しており、その設計方法では、特別な属性を調べてこのアイテムが実際にはシンボリックリンクであると判断する前に、まずアーカイブから通常のファイルを作成します。
注:ファイルのシンボリックリンクを作成したいと誤解する人が増える前に。いいえ、シンボリックリンクデータ、つまりそのパスをファイルに書き込みます。次に、これがシンボリックリンクであることをファイルシステムに通知します。
私はこれをOSXで開発してきました。そこでは、タイプとクリエーターのコードを適宜設定するだけで、通常のファイルをシンボリックリンクに変えることができます。
今、私はこのコードをLinuxでも動作させるのが好きです。だから私はそこで同様の方法を見つけるのが好きです。
シンボリックリンクを作成する通常の方法はsymlink()関数を呼び出すことですが、OSXのBSDシステムで可能であるように、通常のファイルをシンボリックリンクに変更する方法もあるのではないかと思います。作業コードをあまりリファクタリングする必要はありませんか?
st_modeの最上位ビットでファイルタイプを返すlstat()があります。ここで、このモードフィールドに類似のセッター関数もあるのではないかと思います。