首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Unix域协议学习小结

    Unix域提供两种套接字:字节流套接字(类似TCP)以及数据报套接字(类似UDP)。...} 上述示例代码的可读性以及可维护性比较差,根本原因就是pipe函数返回的一对描述符只能够从从第一个中读,第二个中写。...; } pid = fork(); if (pid < 0) { printf("Error, fork failed, errno(%d): %s\n", errno, strerror...如果需要关闭子进程的输入同时通知子进程数据已经发送完毕,而随后从子进程的输出中读取数据直到遇到EOF,对于之前的pipe创建的单向管道来说不会存在任务问题;但是使用socketpair创建的双向管道时,...如果不关闭管道就无法通知对端数据已经发送完毕,但是关闭了管道又无法送终读取结果数据。

    2.1K20

    由一道面试题来了解进程间的通信

    答案:Linux下进程通信 一、进程间通信概述 进程通信有如下一些目的: A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 B、共享数据:多个进程想要操作共享数据...如果系统调用失败返回-1: errno=EMFILE(没有空亲的文件描述符)       EMFILE(系统文件表已满)       EFAULT(fd数组无效) 注意:fd[0]用于读取管道,fd[1...库函数:pclose(); 原型:int pclose(FILE *stream); 返回值:返回系统调用wait4()的状态。 如果stream无效,或者系统调用wait4()失败,则返回-1。...通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。...广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。

    2.2K70

    记一次传递文件句柄引发的血案

    个人非常感兴趣,就写下了下面的两个程序来验证 STREAMS 管道是否支持发送接收文件描述符,且发送方与接收方的描述符是否可能不相同。...\n"); 30 return 0; 31 } 32 else if (pid > 0) 33 { 34 close (fd[1])...(line, stdout) == EOF) { 82 printf ("fputs error\n"); 83 return 0...之后不断从console读入用户输入的两个整数,创建一个临时文件(get_temp_fd)并将用户输入写入文件, 之后通过管道将此临时文件传递给子进程,然后在管道上等待子进程返回的另一个临时文件句柄,...这就奇怪了,读取管道返回这个错误的唯一原因只能是管道被关闭,而此管道在子进程端已经被重定向到了标准输入、标准输出, 当标准输入输出关闭时,唯一的可能性是进程已经退出。难道子进程已经不在了么?

    50320

    Socket编程实践(2) Socket API 与 简单例程

    socket()的返回值:成功时返回非负整数;失败时返回-1; bind() 函数 bind()函数绑定一个本地地址到套接字上,这相当于为电话绑定了号码。...sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; }; struct in_addr { uint32..."); struct sockaddr_in addr; //填充结构 addr.sin_family = AF_INET; addr.sin_port= htons(8001); //主机字节序转换为网络字节序...addr.sin_addr= htonl(INADDR_ANY);//绑定主机的任一个IP地址 /*下面两句具有相同的功能:都是绑定到本机ip地址*/ //inet_aton("127.0.0.1...函数返回值:成功返回一个非负整数,代表一个套接字;失败返回-1; connect()函数 该函数用于建立一个连接到指定的套接字。

    84350

    匿名管道和命名管道

    ,slaver就不用传参了,父进程通过管道写,子进程通过标准输入读 用到了dup2,将从pipefd[0]中读变成从0开始读 想让父进程固定的向管道里写入指定大小字节的内容,必须读取四个字节,四个字节四个字节的写和读...,这里的管道64kb 必须读取四个字节 如果父进程不给子进程发送数据呢?...返回 -1创建失败 创建一个共享文件 ....make一下生成两个可执行程序,因为是server控制的,所以要先运行server 运行后就会多一个myfifo命名管道 命名管道的删除 想删除这个myfifo用unlink(成功返回0 ,失败返回-...1) 命令行删除 代码也可以删(成功返回0 ,失败返回-1),头文件是unistd.h 创建完文件,5秒后就删除了 思路 用到了open 打开管道文件,第二个参数是只进行读取 enum中 fd失败了

    15610

    socket的五大误区

    原文地址:socket的五大误区 作者:青竹玉简 隐患 1.忽略返回状态 第一个隐患很明显,但它是开发新手最容易犯的一个错误。如果您忽略函数的返回状态,当它们失败或部分成功的时候,您也许会迷失。...send API 函数有三类可能的返回值: 如果数据成功地排到传输队列,则返回 0。 如果排队失败,则返回 -1(通过使用 errno 变量可以了解失败的原因)。...在这里忽略返回状态将导致不完全的发送和随后的数据丢失。 隐患 2.对等套接字闭包 UNIX 有趣的一面是您几乎可以把任何东西看成是一个文件。文件本身、目录、管道、设备和套接字都被当作文件。...隐患 4.发送结构化数据 套接字是发送无结构二进制字节流或 ASCII 数据流(比如 HTTP 上的 HTTP 页面,或 SMTP 上的电子邮件)的完美工具。...但是,如果一个运行在高位优先的 IBM PowerPC 上的客户端发送一个 32 位的整数到一个低位优先的 Intel x86,那将会发生什么呢?字节排列将引起不正确的解释。 字节交换还是不呢?

    82620

    揭秘C语言文件操作:文件读写、最佳实践、权限管理和安全策略

    ftell函数返回当前文件指针的位置,以字节为单位。如果获取位置失败,ftell函数会返回-1。...fputs函数会将指定的字符串写入到文件中,直到遇到结尾的空字符。它返回非负值表示成功,返回EOF表示失败。putc函数用于逐字符写入文本文件。...常见的errno错误码包括:EACCES:权限不足ENOENT:文件不存在EEXIST:文件已存在ENOMEM:内存不足EBADF:无效的文件描述符EIO:IO错误EINVAL:无效的参数EPIPE:管道破裂要获取具体的错误信息...perror函数会根据当前的errno值来获取相应的错误信息,并将其与自定义的错误来源描述一起打印出来。...例如,如果fopen函数返回NULL,表示文件打开失败;如果fputs函数返回EOF,表示写入文件失败。

    35210

    Linux进程通信

    返回值:成功时返回0;失败时返回-1;失败原因通常有三大原因:给定的信号无效(errno=EINVAL)、发送权限不够(errno=EPERM)、目标进程不存在(errno=ESRCH)。...MSG_PEEK:窥看外来信息 MSG_WAITALL:等待所有数据 返回值:成功时返回实际接收的字节数;失败时返回-1,相应地设定全部变量errno;为0:时表示对端已经关闭。...返回值:成功时返回实际接受的字节数;失败时返回-1,错误原因存于errno中;为0时表示对端已经关闭。 recvfrom是阻塞函数,直到接收到信息或出错。...:仅本操作非阻塞 MSG_OOB:发送或接收带外数据 返回值:成功时返回已发送的字节数;失败时返回-1,相应地设定全局变量errno。...返回值:成功时返回实际传送出去的字符数;失败时返回-1,错误原因存于errno中。 sendto缺省是阻塞函数,直到发送完毕或出错。

    1.9K20

    PHP实现多线程编程的最佳实现方式

    当有人想要实现并发功能时,他们通常会想到用fork或者spawn threads,但是当他们发现php不支持多线程的时候,大概会转换思路去引入其他的语言,比如perl。...PHP仍然需要解析hostname(所以直接使用ip更加明智),不过将在打开一个连接之后立刻返回,继而我们就可以连接下一台服务器。...函数的功能用ext/sockets函数实现。... = socket_last_error($s);     $errstr = socket_strerror($errno);     socket_close($s);     return false...PHP5的先进之处在于,你可以用stream_select()处理几乎所有的stream-例如你可以通过include STDIN用它接收键盘输入并保存进数组,你还可以接收通过proc_open()打开的管道中的数据

    92820

    Python自动化运维1

    WeiyiGeek.filecmp示例 信息发送 电子邮件发送 smtplib 发送电子邮件模块 描述:SMTP(Simple Mail Transfer Protocol)是简单传输协议,它是一组用于用于由源地址到目的地址的邮件传输规则...python对SMTP的支持: ①email模块:负责构建邮件 ②smtplib模块:负责发送邮件 smtplib模块定义了一个SMTP客户机会话对象,可以使用该对象向任何具有SMTP或ESMTP侦听器守护进程的...Internet机器发送邮件 Python中采用smtplib模式实现邮件的发送功能,电子邮件是最流行的互联网应用之一,运维人员常常通过邮件来发送告警信息,业务质量报表等等; stmplib模块常用:...#错误代码存储在错误的smtp_code属性中,smtp_error属性设置为错误消息。 exception smtplib.SMTPSenderRefused #发送方地址拒绝了。...=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params) #创建包含图片数据的邮件体,imagedata原始二进制图片数据的字节字符串

    1.7K20

    【Linux】基础IO ——文件(上)

    int fputs(const char *s, FILE *stream); 你想要写的字符串,写入特定的流当中,成功返回字符串字符个数,失败返回-1 ---- #include...,如果打开失败,返回 -1 操作系统是如何让用户给自己传递标志位的 1....系统怎么做 操作系统存在系统调用接口 int YYY (int flag),flag作为一个整数,有32个比特位,可以用一个比特位表示一个标志位 ,一个int 就可以同时传递至少32个标记位 此时的flag...int fd, const void *buf, size_t count); fd代表文件描述符 buf代表 缓冲区 count代表 缓冲区大小 write将缓冲区的count大小的数据写入 fd中 返回值代表实际写入多少字节...O_RDONLY : 读取 输入 man 2 read ssize_t read(int fd, void *buf, size_t count); 从文件描述符fd中将我们想要的数据,按照数据块的方式读取出来 返回值代表多少字节

    73910
    领券