Hi,
>>     ret = sd_pid_notify_with_fds(0, 0, "FDSTORE=1\n", (const int *) fd,
>>                            num_fd);

> Is "fd" a single fd? If so you need to pass this as &fd of course...

No, fd is a int array, which holds num_fd,  "fd" values.

>The FDSTORE=1 line doesn't need to be suffixed with "\n" btw (but it
>doesn't hurt if you do...)
>It might be worth strace'ing your process to see that the right
>sendmsg() call is issued. If in doubt, strace this specific code
>snippet and paste the sendmsg() line here.

 This is the output of the strace call on this section of the code in the
sd_pid_notify_with_fds, when I try to save the fds.

socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 8

sendmsg(8, {msg_name(21)={sa_family=AF_LOCAL,
sun_path="/run/systemd/notify"}, msg_iov(1)=[{"FDSTORE=1\n", 10}],
msg_controllen=40, {cmsg_len=20, cmsg_level=SOL_SOCKET,
cmsg_type=SCM_RIGHTS, {7}}, msg_flags=0}, MSG_NOSIGNAL) = -1 EINVAL
(Invalid argument)

close(8)                                = 0

Thanks
Jana
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to