C语言的isatty函数和ttyname函数以及sendmsg函数用法
C语言的isatty函数和ttyname函数以及sendmsg函数用法
发布时间:2016-12-28 来源:查字典编辑
摘要:isatty()函数头文件:#include定义函数:intisatty(intdesc);函数说明:如果参数desc所代表的文件描述词为一...

isatty()函数

头文件:

#include <unistd.h>

定义函数:

int isatty(int desc);

函数说明:如果参数 desc 所代表的文件描述词为一终端机则返回1, 否则返回0.

返回值:如果文件为终端机则返回1, 否则返回0.

C语言ttyname()函数:返回一终端机名称

头文件:

#include <unistd.h>

定义函数:

char * ttyname(int desc);

函数说明:如果参数desc 所代表的文件描述词为一终端机, 则会将此终端机名称由一字符串指针返回, 否则返回NULL.

返回值:如果成功则返回指向终端机名称的字符串指针, 有错误情况发生时则返回NULL.

范例

#include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> main() { int fd; char * file = "/dev/tty"; fd = open (fiel, O_RDONLY); printf("%s", file); if(isatty(fd)) { printf("is a tty. n"); printf("ttyname = %s n", ttyname(fd)); } else printf(" is not a ttyn"); close(fd); }

执行:

/dev/tty is a tty ttyname = /dev/tty

C语言sendmsg()函数:经socket传送数据

头文件:

#include <sys/types.h> #include <sys/socket.h>

定义函数:

int sendmsg(int s, const strcut msghdr *msg, unsigned int flags);

函数说明:sendmsg()用来将数据由指定的socket 传给对方主机. 参数s 为已建立好连线的socket, 如果利用UDP 协议则不需经过连线操作. 参数msg 指向欲连线的数据结构内容, 参数flags 一般默认为0, 详细描述请参考send().

结构msghdr 定义如下:

struct msghdr { void *msg_name; //Address to send to /receive from . socklen_t msg_namelen; //Length of addres data strcut iovec * msg_iov; //Vector of data to send/receive into size_t msg_iovlen; //Number of elements in the vector void * msg_control; //Ancillary dat size_t msg_controllen; //Ancillary data buffer length int msg_flags; //Flags on received message };

返回值:成功则返回实际传送出去的字符数, 失败返回-1, 错误原因存于errno

错误代码:

1、EBADF 参数s 非合法的socket 处理代码.

2、EFAULT 参数中有一指针指向无法存取的内存空间

3、ENOTSOCK 参数s 为一文件描述词, 非socket.

4、EINTR 被信号所中断.

5、EAGAIN 此操作会令进程阻断, 但参数s 的socket 为不可阻断.

6、ENOBUFS 系统的缓冲内存不足

7、ENOMEM 核心内存不足 EINVAL 传给系统调用的参数不正确.

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C语言学习
热门C语言学习
编程开发子分类