2017-04-10 2 views
0

私はLinuxシステム上でローカル抽象ソケットに接続しようとしている異なる言語の2つのプログラムを持っています。 2人のうちの1人が失敗しています。理由を特定するのが難しいです。私はちょうどstrace出力手段で見つけることができる1つの違いを知りたいので、私はそれを修正することができます。作業1は、このstrace出力していstraceを使ってsyscallに接続するデバッグ - @ "sun_path"はどういう意味ですか?

socket(PF_LOCAL, SOCK_SEQPACKET, 0)  = 3 
connect(3, {sa_family=AF_LOCAL, [email protected]"qwertystop.bus.8"}, 19) = 0 

非稼働がこのstrace出力あり:非稼働1は、複数のPIDを使用してプログラムからである、:

[pid 6307] socket(PF_LOCAL, SOCK_SEQPACKET, 0) = 13 
[pid 6307] connect(13, {sa_family=AF_LOCAL, sun_path="qwertystop.bus.8"}, 19) = -1 ENOENT (No such file or directory) 

を3つの違いがあります。 connect呼び出しの戻り値は異なり、現実のものは文字列の前に@となります。私は、ソケット接続が別のプロセスによって開始されたという理由だけでプロセス内で動作しないことはほとんど意味を持たないため、@が見つからない原因が何であれ、失敗の原因であると推測します。


(私は明示的に私は、言語を述べていないです理由である、「抽象ソケットに接続」するために、一般的な解決策を要求していない。これは宿題であると私は誘惑かもしれない状況を作り出すことを拒否する主な理由コードを直接コピーすることができます。)

答えて

0

意味が確定しました。文字列の前にヌルバイトがあることを意味します。または、おそらく印刷できない文字か、ソケットが抽象であることを示しています。

0

これはLinuxの問題です。 http://man7.org/linux/man-pages/man7/unix.7.htmlを参照してください。それは "抽象ソケット"の下にあるはずです。

+0

'@ '記号は、リンク先の文書のどこにも表示されません。 –

+0

申し訳ありません。私はnullバイトについての前の答えからそれを得たと思った。最初のヌルバイトはlinux-ismです。 [https://superuser.com/questions/381262/linux-init-local-socket-with](https://superuser.com/questions/381262/linux-init-local-socket-with)。 私が不明な場合は申し訳ありません。 –

関連する問題