网络编程
2puT
Linux的爱好者,爱开源. Github address: https://github.com/lina-not-linus
展开
-
#include<xxxx.h>与#include<sys/xxx.h>区别
一般头文件#include在/usr/include下面,这里是标准C程序头文件,如果你的头文件前加了,#include那说明这是系统调用函数头文件,其在/usr/include/sys下面。原创 2016-07-11 08:48:44 · 4846 阅读 · 0 评论 -
FD_CLOEXEC是什么?
这是fcntl的一个Flag标志。fcntl(fd, F_SETFD, FD_CLOEXEC);// 这里设置为FD_CLOEXEC表示当程序执行exec函数时本fd将被系统自动关闭,表示不传递给exec创建的新进程, 如果设置为fcntl(fd, F_SETFD, 0);那么本fd将保持打开状态复制到exec创建的新进程中FD_CLOEXEC用来设置文件的close-on-exec状态标准原创 2016-07-10 12:55:21 · 689 阅读 · 0 评论 -
#if 与#endif
#if defined(__MMI_GAME_MAJUNG_240x320__) || defined(__MMI_GAME_MAJUNG_176x220__) || defined(__MMI_GAME_MAJUNG_320x240__)#define IS_MAJUNG_BASE_GAME#endif 什么意思?谁能解释下这是条件编译就是说,如果在编译这几行之前,已经定义过(__MMI原创 2016-07-05 11:28:48 · 822 阅读 · 0 评论 -
C语言头文件#include<unistd.h>的作用是什么?
unistd.h是用于linux/unix系统的调用。 #include 是POSIX标准定义的unix类系统定义符号常量的头文件,包含了许多UNIX系统服务的函数原型,例如read函数、write函数和getpid函数。原创 2016-07-06 09:19:19 · 6196 阅读 · 0 评论 -
APUE 1-5用标准I/O将标准输入复制到标准输出
#include /* for definition of errno */ #include /* ISO C variable aruments */ static void err_doit(int, int, const char *, va_list); /* * Nonfatal error related原创 2016-07-07 09:13:53 · 615 阅读 · 0 评论 -
APUE 1-4用标准将标准输入复制到标准输出
#include "apue.h"/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */原创 2016-07-07 09:13:04 · 454 阅读 · 0 评论 -
C语言EOF含义
EOF是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。EOF不是特殊字符,而是一个定义在头文件stdio.h的常量,一般等于-1。#define EOF (-1)除了表示文件结尾,EOF还可以表示标准输入的结尾。但是,标准输入与文件不一样,无法事先知道输入的长度,必须手动输入一个字符原创 2016-07-06 09:27:00 · 877 阅读 · 0 评论 -
APUE 1-3.c列出一个目录中的所有文件
1-3.c程序,必须指出,apue.h 中包含的出错例程(函数)仅用于将信息输出到标准错误;当程序作为守护进程运行时,需要有另外的出错例程(函数)来处理守护进程可能输出的信息,例如与 syslog 进程通信并记录到日志等,限于篇幅,这里没有整合相应的源码,有兴趣的童鞋,请参考《UNIX 环境高级编程(第三版)》一书中,第727页开始的内容my_LS_command_原创 2016-07-06 09:23:20 · 550 阅读 · 0 评论 -
APUE 1-3程序,列出一个目录中的所有文件
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-06 09:24:07 · 358 阅读 · 0 评论 -
APUE 1-6打印进程ID
#include "apue.h"int main(){ printf("hello world from process ID %ld\n", (long)getpid()); exit(0);}/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H原创 2016-07-07 09:21:31 · 389 阅读 · 0 评论 -
APUE 1-7 从标准输入读命令并执行
#include "apue.h"#include "my_err.h"#include int main(){ char buf[MAXLINE]; pid_t pid; int status; printf("%% "); while(fgets(buf, MAXLINE, stdin) != NULL) { if (buf[strlen(buf) - 1] == '原创 2016-07-07 09:24:04 · 309 阅读 · 0 评论 -
APUE 1-9 打印用户ID和组ID
1 #include "apue.h" 2 3 int main() 4 { 5 printf("uid = %d, gid = %d\n", getuid(), getgid()); 6 exit(0); 7 }~原创 2016-07-07 09:25:31 · 302 阅读 · 0 评论 -
sbrk函数是不是系统调用,还是c标准库函数?
sbrk是系统调用,是Unix/Linux系统提供的接口(只能在Unix/Linux系统下才能用的)。而malloc是标准c函数在,所以在Unix/Linux和windows下都能用。ps:在Unix/Linux下,malloc底层实现就是通过系统调用sbrk实现的;在windows下malloc则是通过调用windows系统提供的接口实现。原创 2016-07-07 09:30:24 · 933 阅读 · 0 评论 -
C语言中sync()
sync是C语言的一个库函数。调用sync可以将系统缓冲区(内存中)的数据写入到文件系统(磁盘)中。sync的声明为:int sync(void);位于头文件unistd.h。当同步成功返回0,否则返回-1。功能为将系统缓冲区的内容写回磁盘,以确保数据同步。在操作系统中,除非设置了自动同步,否则为了减少磁盘的写入量,延长磁盘寿命,写入文件时并不是即时写入到磁盘中,而是先原创 2016-07-09 08:29:56 · 7384 阅读 · 0 评论 -
fcntl.h头文件
close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include 定义函数 int close(int fd); 函数说明 当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为先前由open()或creat()所返回的文件描述词。原创 2016-07-09 08:32:00 · 3583 阅读 · 0 评论 -
linux编程里有这么一句if (lseek(STDIN_FILENO, 0, SEEK_CUR) == -1 ),请问是de意思?
STDIN_FILENO 就是 stdin,但是, stdin 是对应 FILE *, STDIN_FILENO 是 输入流描述符,或文件号,通常是 0。STDIN_FILENO 与read/write 相配。SEEK_CUR -- 偏移位置从文件指针当前位置开始计算。参数2你给的 0,是偏移量。怎样才能输出seek OK呢 -- 你试试 用管道 的方法,数据从管道 输入,相当于原创 2016-07-09 08:35:06 · 1501 阅读 · 0 评论 -
程序中umask(0)的意思?
linux中的 umask 函数主要用于:在创建新文件或目录时 屏蔽掉新文件或目录不应有的访问允许权限。文件的访问允许权限共有9种,分别是:r w x r w x r w x(它们分别代表:用户读 用户写 用户执行 组读 组写 组执行 其它读 其它写 其它执行)。其实这个函数的作用,就是设置允许当前进程创建文件或者目录最大可操作的权限,比如这里设置为0,它的意思就是0取反再创建文件时权限相与,原创 2016-07-12 08:36:04 · 7720 阅读 · 1 评论 -
fflush感悟
fflush用于清空缓冲流,虽然一般感觉不到,但是默认printf是缓冲输出的。fflush(stdout),使stdout清空,就会立刻输出所有在缓冲区的内容。fflush(stdout)这个例子可能不太明显,但对stdin很明显。原创 2016-07-12 08:41:58 · 331 阅读 · 0 评论 -
rename函数功能
rename函数功能是给一个文件重命名,用该函数可以实现文件移动功能,把一个文件的完整路径的盘符改一下就实现了这个文件的移动。1 头文件:stdio.h2 声明:int rename(char *oldname, char *newname);3 功能:将oldname重命名为newname,如果oldname和newname归属的文件夹不同,可以做到移动的效果。原创 2016-07-13 08:52:12 · 1744 阅读 · 0 评论 -
dirent.h
是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数、readdir函数.中文名dirent.h属 性目录操作的头文件包 含UNIX系统服务的函数原型例 如opendir函数目录1定义2命令定义编辑#include 是POSIX.1标准定义转载 2016-07-13 08:54:40 · 559 阅读 · 1 评论 -
C语言中,FILE是关键字吗?
FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname;} FILE;FILE 主要用来定原创 2016-07-14 08:55:29 · 3505 阅读 · 0 评论 -
fgetc() 与getc()的区别
fgetc():定义函数 int fgetc(FILE * stream);函数说明 fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。返回值 fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾。getc(): 功 能: 从流中取字符 用 法: int getc(FILE *stream);注意: 此函数被IS原创 2016-07-15 09:17:39 · 1880 阅读 · 0 评论 -
ifndef define endif预编译
1.在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量重定义的错误。在头文件中实用#ifndef #define #endif能避免头文件的重定义。方法:例如要编写头文件test.h在头文件开头写上两行:#ifndef _TEST_H#define _TEST_H//一般是文件名的大写头文件结尾写上一行:#endif这原创 2016-07-05 10:43:02 · 442 阅读 · 0 评论 -
APUE 1-8 strerror 和 perror
#include "apue.h"#include int main(int argc, char *argv[]){ fprintf(stderr, "EACCES: %s\n", strerror (EACCES)); errno = ENOENT; perror(argv[0]); exit(0);}/* * Our own header, to be include原创 2016-07-07 09:24:48 · 381 阅读 · 0 评论 -
APUE 1-10 从标准输入读命令并执行
1-10.c#include "apue.h"#include "my_err.h"#include static void sig_int(int);int main(){ char buf[MAXLINE]; pid_t pid; int status; if (signal(SIGINT, sig_int) == SIG_ERR) err_sys("sign原创 2016-07-19 08:57:48 · 399 阅读 · 0 评论 -
APUE 2-14 打印所有可能的sysconf和pathconf
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:03:08 · 385 阅读 · 0 评论 -
APUE 2-16 为路径名动态的分配存储空间
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:06:19 · 493 阅读 · 0 评论 -
APUE 2-17 确定文件描述符个数
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:10:13 · 368 阅读 · 0 评论 -
APUE 3-11 对于指定的描述符打印文件标志
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:15:42 · 358 阅读 · 0 评论 -
APUE 3-5 将标准输入复制到标准输出
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:20:27 · 407 阅读 · 0 评论 -
APUE 4-3 对每个命令行参数打印文件类型
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:23:11 · 404 阅读 · 0 评论 -
APUE 4-22 递归降序遍历目录层次结构,并按文件类型计数
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:33:55 · 498 阅读 · 0 评论 -
APUE 5-11 对各个标准I/O流打印缓冲状态信息
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:37:43 · 414 阅读 · 0 评论 -
APUE 5-13 mkstemp函数的应用
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:40:20 · 442 阅读 · 0 评论 -
APUE 5-15 观察内存流的写入操作
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-19 09:43:27 · 518 阅读 · 0 评论 -
APUE 7-3 终止处理程序实例
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-20 09:13:28 · 345 阅读 · 0 评论 -
APUE 7-4 将所有命令行参数回显到标准输出
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-20 09:16:09 · 389 阅读 · 0 评论 -
APUE 7-9 进行命令处理程序的典型骨架部分
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-20 09:21:14 · 330 阅读 · 0 评论 -
APUE 7-13 longjmp对各类对象的影响
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-20 09:23:48 · 301 阅读 · 0 评论 -
APUE 8-1 fork函数实例
apue.h/* * Our own header, to be included before all standard system headers. */#ifndef _APUE_H#define _APUE_H#define _POSIX_C_SOURCE 200809L#if defined(SOLARIS) /* Solaris 10 */#define _XOP原创 2016-07-20 09:26:02 · 347 阅读 · 0 评论