2016-05-02 18 views
0

ファイルにopen()を呼び出して書き込むだけで、誰かが私のUNIXソケットに書き込むことができるようにする方法があるかどうか疑問に思っていますか?それが今では、次のような何かをしなければならない現状では:unixソケットのopen()呼び出しをsocket()とconnect()呼び出しにマップする方法はありますか?

// Create socket. 

fd = socket(AF_UNIX, SOCK_STREAM, 0); 
if (fd == -1) 
    { 
    result = -1; 
    goto done; 
    } 

// Set socket name. 

memset(&addr, 0, sizeof(addr)); 
addr.sun_family = AF_UNIX; 
strncpy(addr.sun_path, socket_name, sizeof(addr.sun_path) - 1); 

// Connect. 

result = connect(fd, (struct sockaddr*) &addr, sizeof(addr)); 
if (result == -1) 
    { 

    // If some error then we're done.          
    } 

// Write buffer. 

result = write(fd, buffer, length); 
if (result == -1) 
    goto done; 

close(fd); 

I)があり、私は普通のファイルのようにソケットファイルを処理し、ユーザーがちょうど(オープン呼び出す必要があり)、(書くことができ、いくつかのメカニズムをかもしれません期待していましたと閉じる()。そのような仕組みが存在するか?

おかげで、 ニック

+0

いいえ、不可能です。 Unixソケットで標準の関数/ツールを使用しても動作しないことを示す例については、Webで「unix socket shell」を検索してください。 –

+0

あなたの作業内容は不明です。あなたはカーネルモジュールを設計していますか?あなたは図書館を書いていますか? 「私のUNIXソケット」とはどういう意味ですか? –

+0

David Schwartz - 私は、クライアントがロギングに使用するUNIX(ドメイン)ソケットサーバーを作成しました。これはsyslogと同様です。ソケットの呼び出しの後にwrite()とclose()の代わりにfopen()、fprintf()、fclose()をクライアントが単純に行うことができればいいと思っていました。 – nickdu

答えて

0

技術的にはFUSEで可能ですが、あなたはsocatあるいはそれ以上の固有のソリューションを使用した方がいいでしょう。

関連する問題