実行中のプロセスがCを使用して新しいタブでファイルgedit
を開くようにするプログラムを作成したいと思います。ファイルは、プログラムに提供する引数になります。ただし、使用は一切.txt
避けたいと思います。system()
私はLinuxを使用しています。これは可能ですか?もしそうなら、どういう意味ですか?
これを行う標準的な方法は、エディターの実行可能ファイル名をアプリケーションにハードコーディングしないことです。ユーザーはgeditをまったくインストールしていない可能性があります(システムがGnomeを実行している場合にのみ存在します)。代わりにxdg-open
、開くファイルを引数として使用します。例えば:
system("xdg-open myfile.txt");
ユーザーが代わりにデフォルトのエディターとしてgeditを使用している場合、geditが既に実行されていれば、新しいタブでファイルが開きます。実行されていない場合は、最初に開始されます。
必要ありませんsystem()
。fork/execlpを使用できます
if(!fork())
execlp("gedit", "gedit", filename, NULL);
私のラップトップにあるgeditのバージョンは、実行中のインスタンスがすでにある場合、デフォルトで新しいタブを使用しますが、他のバージョンについてはよくわかりません。