Movatterモバイル変換


[0]ホーム

URL:


Skip Navigation Links
Exit Print View
Link to oracle.comman pages section 2: System Calls    Oracle Solaris 11 Information Library
Oracle Technology Network
Library
PDF
Print View
Feedback
search filter icon
search icon
 Search Scope:

Document Information

Preface

Introduction

System Calls

access(2)

acct(2)

acl(2)

adjtime(2)

alarm(2)

brk(2)

chdir(2)

chmod(2)

chown(2)

chroot(2)

close(2)

creat(2)

dup(2)

exec(2)

execl(2)

execle(2)

execlp(2)

execv(2)

execve(2)

execvex(2)

execvp(2)

_Exit(2)

_exit(2)

exit(2)

faccessat(2)

facl(2)

fchdir(2)

fchmod(2)

fchmodat(2)

fchown(2)

fchownat(2)

fchroot(2)

fcntl(2)

fexecve(2)

fgetlabel(2)

fork1(2)

fork(2)

forkall(2)

forkallx(2)

forkx(2)

fpathconf(2)

fstat(2)

fstatat(2)

fstatvfs(2)

futimens(2)

futimesat(2)

getacct(2)

getcontext(2)

getdents(2)

getegid(2)

geteuid(2)

getgid(2)

getgroups(2)

getisax(2)

getitimer(2)

getlabel(2)

getmsg(2)

getpflags(2)

getpgid(2)

getpgrp(2)

getpid(2)

getpmsg(2)

getppid(2)

getppriv(2)

getprojid(2)

getrctl(2)

getrlimit(2)

getsid(2)

gettaskid(2)

getuid(2)

getustack(2)

ioctl(2)

issetugid(2)

kill(2)

lchown(2)

link(2)

linkat(2)

llseek(2)

lseek(2)

lstat(2)

_lwp_cond_broadcast(2)

_lwp_cond_reltimedwait(2)

_lwp_cond_signal(2)

_lwp_cond_timedwait(2)

_lwp_cond_wait(2)

_lwp_continue(2)

_lwp_info(2)

_lwp_kill(2)

_lwp_mutex_lock(2)

_lwp_mutex_trylock(2)

_lwp_mutex_unlock(2)

_lwp_self(2)

_lwp_sema_init(2)

_lwp_sema_post(2)

_lwp_sema_trywait(2)

_lwp_sema_wait(2)

_lwp_suspend(2)

memcntl(2)

meminfo(2)

mincore(2)

mkdir(2)

mkdirat(2)

mknod(2)

mknodat(2)

mmap(2)

mmapobj(2)

mount(2)

mprotect(2)

msgctl(2)

msgget(2)

msgids(2)

msgrcv(2)

msgsnap(2)

msgsnd(2)

munmap(2)

nice(2)

ntp_adjtime(2)

ntp_gettime(2)

open(2)

openat(2)

pathconf(2)

pause(2)

pcsample(2)

pipe(2)

poll(2)

p_online(2)

ppoll(2)

pread(2)

priocntl(2)

priocntlset(2)

processor_bind(2)

processor_info(2)

profil(2)

pset_assign(2)

pset_bind(2)

pset_create(2)

pset_destroy(2)

pset_getattr(2)

pset_info(2)

pset_list(2)

pset_setattr(2)

putacct(2)

putmsg(2)

putpmsg(2)

pwrite(2)

read(2)

readlink(2)

readlinkat(2)

readv(2)

rename(2)

renameat(2)

resolvepath(2)

rmdir(2)

sbrk(2)

semctl(2)

semget(2)

semids(2)

semop(2)

semtimedop(2)

setcontext(2)

setegid(2)

seteuid(2)

setgid(2)

setgroups(2)

setitimer(2)

setpflags(2)

setpgid(2)

setpgrp(2)

setppriv(2)

setrctl(2)

setregid(2)

setreuid(2)

setrlimit(2)

setsid(2)

settaskid(2)

setuid(2)

setustack(2)

shmadv(2)

shmat(2)

shmctl(2)

shmdt(2)

shmget(2)

shmids(2)

shmop(2)

sigaction(2)

sigaltstack(2)

sigpending(2)

sigprocmask(2)

sigsend(2)

sigsendset(2)

sigsuspend(2)

sigwait(2)

__sparc_utrap_install(2)

stat(2)

statvfs(2)

stime(2)

swapctl(2)

symlink(2)

symlinkat(2)

sync(2)

sysfs(2)

sysinfo(2)

time(2)

times(2)

uadmin(2)

ulimit(2)

umask(2)

umount(2)

umount2(2)

uname(2)

unlink(2)

unlinkat(2)

ustat(2)

utime(2)

utimensat(2)

utimes(2)

uucopy(2)

vfork(2)

vforkx(2)

vhangup(2)

waitid(2)

wracct(2)

write(2)

writev(2)

yield(2)

putmsg

, putpmsg

- send a message on a stream

Synopsis

#include <stropts.h>intputmsg(intfildes,const struct strbuf *ctlptr,const struct strbuf *dataptr,intflags);
intputpmsg(intfildes,const struct strbuf *ctlptr,const struct strbuf *dataptr,intband,intflags);

Description

Theputmsg() function creates a message from user-specified buffer(s) and sendsthe message to a streams file. The message may contain either adata part, a control part, or both. The data and control partsto be sent are distinguished by placement in separate buffers, as describedbelow. The semantics of each part is defined by the streams modulethat receives the message.

Theputpmsg() function does the same thing asputmsg(), but provides theuser the ability to send messages in different priority bands. Except wherenoted, all information pertaining toputmsg() also pertains toputpmsg().

Thefildes argument specifies a file descriptor referencing an open stream. Thectlptr anddataptr arguments each point to astrbuf structure, which containsthe following members:

int      maxlen;     /* not used here */int      len;        /* length of data */void     *buf;       /* ptr to buffer */

Thectlptr argument points to the structure describing the control part, ifany, to be included in the message. Thebuf member in thestrbuf structure points to the buffer where the control information resides, andthelen member indicates the number of bytes to be sent. Themaxlenmember is not used inputmsg() (seegetmsg(2)). In a similar manner,dataptr specifies the data, if any, to be included in themessage. Theflags argument indicates what type of message should besent and is described later.

To send the data part of a message,dataptr must not beNULL, and thelen member ofdataptr must have a valueof 0 or greater. To send the control part of a message,the corresponding values must be set forctlptr. No data (control) partis sent if eitherdataptr (ctlptr) isNULL or thelenmember ofdataptr (ctlptr) is negative.

Forputmsg(), if a control part is specified, andflags is settoRS_HIPRI, a high priority message is sent. If no controlpart is specified, andflags is set toRS_HIPRI,putmsg() fails and setserrno toEINVAL. Ifflags is set to 0, a normal (non-priority)message is sent. If no control part and no data part arespecified, andflags is set to 0, no message is sent,and 0 is returned.

The stream head guarantees that the control part of a message generatedbyputmsg() is at least 64 bytes in length.

Forputpmsg(), the flags are different. Theflags argument is abitmask with the following mutually-exclusive flags defined:MSG_HIPRI andMSG_BAND. Ifflagsis set to 0,putpmsg() fails and setserrno toEINVAL. If acontrol part is specified andflags is set toMSG_HIPRI andbandis set to 0, a high-priority message is sent. Ifflags isset toMSG_HIPRI and either no control part is specified orbandis set to a non-zero value,putpmsg() fails and setserrno toEINVAL. If flags is set toMSG_BAND, then a message is sentin the priority band specified byband. If a control part and datapart are not specified andflags is set toMSG_BAND, no messageis sent and 0 is returned.

Normally,putmsg() will block if the stream write queue is full due to internal flow control conditions. For high-priority messages,putmsg() doesnot block on this condition. For other messages,putmsg() does notblock when the write queue is full andO_NDELAY orO_NONBLOCK isset. Instead, it fails and setserrno toEAGAIN.

Theputmsg() orputpmsg() function also blocks, unless prevented by lack ofinternal resources, waiting for the availability of message blocks in thestream, regardless of priority or whetherO_NDELAY orO_NONBLOCK has been specified.No partial message is sent.

Return Values

Upon successful completion,0 is returned. Otherwise,-1 is returned anderrnois set to indicate the error.

Errors

Theputmsg() andputpmsg() functions will fail if:

EAGAIN

A non-priority message was specified, theO_NDELAY orO_NONBLOCK flag is set and the stream write queue is full due to internal flow control conditions.

EBADF

Thefildes argument is not a valid file descriptor open for writing.

EFAULT

Thectlptr ordataptr argument points to an illegal address.

EINTR

A signal was caught during the execution of theputmsg() function.

EINVAL

An undefined value was specified inflags;flags is set toRS_HIPRI and no control part was supplied; or the stream referenced byfildes is linked below a multiplexor.

ENOSR

Buffers could not be allocated for the message that was to be created due to insufficient streams memory resources.

ENOSTR

Thefildes argument is not associated with a stream.

ENXIO

A hangup condition was generated downstream for the specified stream, or the other end of the pipe is closed.

EPIPE orEIO

Thefildes argument refers to a streams-based pipe and the other end of the pipe is closed. ASIGPIPE signal is generated for the calling thread. This error condition occurs only with SUS-conforming applications. Seestandards(5).

ERANGE

The size of the data part of the message does not fall within the range specified by the maximum and minimum packet sizes of the topmost stream module. This value is also returned if the control part of the message is larger than the maximum configured size of the control part of a message, or if the data part of a message is larger than the maximum configured size of the data part of a message.

In addition,putmsg() andputpmsg() will fail if the stream head hadprocessed an asynchronous error before the call. In this case, thevalue oferrno does not reflect the result ofputmsg() orputpmsg()but reflects the prior error.

Theputpmsg() function will fail if:

EINVAL

Theflags argument is set toMSG_HIPRI andband is non-zero.

Attributes

Seeattributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPE
ATTRIBUTE VALUE
Interface Stability
Committed
Standard

See Also

Intro(2),getmsg(2),poll(2),read(2),write(2),attributes(5),standards(5)

STREAMS Programming Guide

Copyright © 2011, Oracle and/or its affiliates. All rights reserved.Legal Notices
PreviousNext

[8]ページ先頭

©2009-2025 Movatter.jp