1

実行中のプロセスがCを使用して新しいタブでファイルgeditを開くようにするプログラムを作成したいと思います。ファイルは、プログラムに提供する引数になります。ただし、使用は一切.txt避けたいと思います。system()

私はLinuxを使用しています。これは可能ですか?もしそうなら、どういう意味ですか?

4

3 に答える 3

1

これを行う標準的な方法は、エディターの実行可能ファイル名をアプリケーションにハードコーディングしないことです。ユーザーはgeditをまったくインストールしていない可能性があります(システムがGnomeを実行している場合にのみ存在します)。代わりにxdg-open、開くファイルを引数として使用します。例えば:

system("xdg-open myfile.txt");

ユーザーが代わりにデフォルトのエディターとしてgeditを使用している場合、geditが既に実行されていれば、新しいタブでファイルが開きます。実行されていない場合は、最初に開始されます。

于 2012-12-26T12:11:25.927 に答える
1

必要ありませんsystem()。fork/execlpを使用できます

if(!fork())
    execlp("gedit", "gedit", filename, NULL);

私のラップトップにあるgeditのバージョンは、実行中のインスタンスがすでにある場合、デフォルトで新しいタブを使用しますが、他のバージョンについてはよくわかりません。

于 2012-12-27T01:57:45.860 に答える
0

考えられる解決策は次のとおりです。

手順1.geditソースファイルを変更します(関数:is_in_viewport()戻るTRUE)(このリンクを参照)。

ステップ2.プログラムでfork()/を使用し、この変更されたgeditを呼び出します(ここexecl()にいくつかの例があり ます)。

于 2012-12-26T05:31:40.523 に答える